Mysql 通过外键检索数据
我的数据库中有两个表,用户和投诉 用户表: id |名称|密码 抱怨表 id |用户| id |标题|正文 用户id是一个外键。如何根据用户id从投诉表中检索标题和正文 这是我目前所拥有的,但我无法检索特定于用户id的数据 我的用户模型:Mysql 通过外键检索数据,mysql,laravel-5.3,Mysql,Laravel 5.3,我的数据库中有两个表,用户和投诉 用户表: id |名称|密码 抱怨表 id |用户| id |标题|正文 用户id是一个外键。如何根据用户id从投诉表中检索标题和正文 这是我目前所拥有的,但我无法检索特定于用户id的数据 我的用户模型: <?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'surname', 'regnumber', 'course', 'department', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
您需要设置一对多关系,如下所述:
一旦你有了正确的方法,当你做类似于$user->complaints
的事情时,Eloquent就会找到关系
class User extends Model
{
/**
* Get the complains for the User.
*/
public function complains()
{
return $this->hasMany('App\Complain');
}
}
class Complain extends Model
{
/**
* Get the User for the Complain.
*/
public function user()
{
return $this->belongsTo('App\User');
}
}
这是我的用户表迁移:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateComplainsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('complains', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('complains');
}
}
我的用户模型不扩展模型,它扩展了Authenticatable。如果我添加关系,逻辑会工作吗?illumb\Foundation\Auth\User extends Model。我已经分别在我的投诉模型和用户模型中创建了关系。在我的控制器中,我有:$complain=complain::find($id);返回视图('user.profile')->带有投诉($contrim);但在我看来,我得到了这个错误:为foreach()提供的参数无效这是我的视图:@foreach($complaints as$complaints){{{{$complaints->title}}@endforeachChange:return view('user.profile')->withcomplainty($complaints);返回视图('user.profile')->带有(['complains'=>$complains]);您缺少向用户投诉的外键关系。使用户id未签名,并在其右下方添加:$foreign->('user_id')->references('id')->('users');我应该加上:$foreign->('user_id')->references('id')->('users');在我的迁移文件中?在下面的行中是:$table->integer('user_id')->after('id')->nullable();它抛出了一个解析错误:PHP解析错误:语法错误,意外的“(”,期望标识符(T_字符串)或变量(T_变量)或“{”或“$”inC:\xampp\htdocs\SCS\database\migrations\2017_06_08_175638_将_foreign_key_添加到_complains.PHP第18行$table->foreign('user_id')->references('id')->on('users');
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateComplainsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('complains', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('complains');
}
}
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddForeignKeyToComplains extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('complains', function (Blueprint $table) {
$table->integer('user_id')->after('id')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('complains', function (Blueprint $table) {
$table->dropColumn('user_id');
});
}
}