我正在尝试在Laravel中构建我的第一个应用程序,并且似乎遇到了关系问题。
我有用户和员工_成员。工作人员链接到用户帐户,请参阅下面的数据库模式:
staff_members:
Schema::create('staff_members', function($table){
$table->increments('staff_member_id');
$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('user_id')->on('users')->onDelete('cascade')->onUpdate('cascade');
$table->string('first_name');
$table->string('surname');
$table->string('image');
$table->timestamps();
});
用户:
Schema::create('users', function($table){
$table->increments('user_id');
$table->string('username');
$table->string('password');
$table->unsignedInteger('type_id')->nullable();
$table->foreign('type_id')->references('type_id')->on('user_types')->onDelete('set null')->onUpdate('cascade');
$table->timestamps();
});
以下是我的模特:
用户:
class User extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $primaryKey = 'user_id';
protected $table = 'users';
public function staff_member(){
return $this->hasOne('StaffMember', 'user_id');
}
}
StaffMember:
class StaffMember extends Eloquent {
protected $primaryKey = 'staff_member_id';
protected $table = "staff_members";
public function user(){
return $this->belongsTo('User', 'user_id');
}
}
以下是我在代码中运行的内容:
$staff = StaffMember::find(1);
$user = User::find(1);
var_dump($staff->user); // Outputs the user correctly
var_dump($user->staff_member); // Outputs NULL
如您所见,Staff to user relationship工作正常并返回用户数据,但user to staff关系始终返回null。我真的不知道我在这里做错了什么,而且我把头发拉了出来,任何帮助都会非常感激。
更新
感谢@Gregory我发现最终的$ user-> staff_member实际上并没有查询数据库,虽然我仍然无法弄清楚为什么会这样或者如何修复它?
答案 0 :(得分:0)
我没有足够的声誉来评论,所以我会这样做。 你的代码对我来说很好,你试过打印出Laravel使用的sql吗?
$queries = DB::getQueryLog();
$last_query = end($queries);
这将获取您上次执行的查询,将其打印出来,您可能更容易看到问题。