【发布时间】:2018-01-15 13:31:08
【问题描述】:
我有下表:
**Project_Survey**
id
survey_id
<many_other_fields>
scheduled_user
completed_by
可以安排调查并将其分配给用户,但由其他人完成。这两个字段都是表 User 的 FK
project_survey 模型中的关系:
public function user()
{
return $this->belongsTo('App\User', 'completed_by');
}
public function scheduledUser()
{
return $this->belongsTo('App\User', 'scheduled_user');
}
如何在一个表格中显示两个用户?当我这样做时
{{ $survey->firstname }}
它返回completed_by 用户的名字,那么我如何获得预定用户呢? 这似乎不起作用:
{{ $survey->scheduledUser->firstname }}
更新 我在这里犯了一个错误:
public function surveys()
{
return $this
->belongsToMany('App\Survey', 'project_survey')
->withPivot('id')
->leftJoin('user', 'project_survey.completed_by', '=', 'user.id')
->select('survey.*', 'project_survey.*', 'user.firstname', 'user.lastname');
}
我在这里获得了与该项目相关的所有调查。
更新 2
所以我更改了关系调查()以获取项目的所有调查以及所需的数据:
public function surveys()
{
return $this
->hasMany('App\Project_Survey', 'project_id')
->with('survey')
->with('scheduledUser')
->with('user');
}
如果我对 $survey 进行转储,我会恢复这 3 个关系,到目前为止一切都很好:
Project_survey {#961 ▼
#table: "project_survey"
#fillable: array:10 [▶]
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#attributes: array:15 [▶]
#original: array:15 [▶]
#relations: array:3 [▼
"survey" => Survey {#1015 ▶}
"scheduledUser" => null
"user" => User {#1111 ▶}
]
但如果我尝试显示关系中的数据,我仍然会收到错误消息:
{{ $survey->survey()->number }}
未定义的属性: Illuminate\Database\Eloquent\Relations\BelongsTo::$number
【问题讨论】:
-
您如何获取调查数据?你在使用
->with('scheduledUser');吗? -
请显示
dd($survey)的结果 -
{{ $survey->user->firstname }} 和 {{ $survey->scheduledUser->firstname }}
-
见下面的评论; stackoverflow.com/questions/48264027/…我觉得我的关系有问题
标签: php laravel eloquent blade