【发布时间】:2014-02-17 14:56:36
【问题描述】:
我正在尝试在 Laravel 中构建我的第一个应用程序,但似乎遇到了关系问题。
我有用户和 Staff_Members。一名工作人员与用户帐户相关联,请参阅下面的数据库架构:
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');
}
}
员工:
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
如您所见,员工与用户的关系工作正常并返回用户数据,但用户与员工的关系始终返回 null。我真的看不出我在这里做错了什么并且正在拔头发,非常感谢任何帮助。
更新:
感谢@Gregory,我发现最终的 $user->staff_member 实际上并没有查询数据库,尽管我仍然无法弄清楚为什么会这样或如何解决它?
【问题讨论】:
标签: php orm laravel laravel-4 eloquent