Laravel 5使用Eager Loading时出现问题

时间:2015-03-20 22:17:29

标签: laravel

所以我有这个问题,通过人员表使用预先加载来获取用户数据。

控制器:

public function staff()
{
    $salon = Salon::find(Session::get('salon'));
    $staff = Staff::where('salon', $salon->id)->with('user')->get();

    return view('dashboard.salon.staff', compact('staff'));
}

查看:

@foreach ($staff as $staff)
    {{ $staff->user->photo }}
@endforeach

型号:

class Staff extends Model {

    protected $table = 'salonStaff';

    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

我尝试使用dd($ staff)进行故障排除,并且控制器中的用户关系显示为null,并且在foreach中执行dd($ staff-> user)会导致" 1",没有别的

1 个答案:

答案 0 :(得分:0)

如果用户列中的主键是' user',则应在用户模型中指定

protected $primaryKey = 'user';

如果没有,当使用关系时,Eloquent需要传统的外键,例如' user_id' ($ tablename_id)

可以肯定的是,尝试在模型关系中指定外键:

return $this->belongsTo('App\User', 'user');

其中第二个参数是表中的真实外键。

也可以尝试像这样更改您的查询

$staff = Staff::where('salon', $salon->id)->user()->get();