Laravel关系问题 - 一对一

时间:2014-01-26 21:33:03

标签: php orm laravel laravel-4 eloquent

我正在尝试在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实际上并没有查询数据库,虽然我仍然无法弄清楚为什么会这样或者如何修复它?

1 个答案:

答案 0 :(得分:0)

我没有足够的声誉来评论,所以我会这样做。 你的代码对我来说很好,你试过打印出Laravel使用的sql吗?

$queries = DB::getQueryLog();
$last_query = end($queries);

这将获取您上次执行的查询,将其打印出来,您可能更容易看到问题。