我有一个模特,
public function feedback($id)
{
return $this->belongsToMany('App\Worker', 'feedback',
'feedback_id','worker_id')
->where('worker_id',$id);
}
我想将值从控制器传递给模型,
$result = Worker::with('feedback(2)');
$result->some operations after this
我想这样传递值。但这是行不通的。
我有10位工作人员(从1到10)的列表,如果ID为7的工作人员登录,我想显示所有10位工作人员,以及ID为7的工作人员,我还要显示他的反馈。这是我的要求。
答案 0 :(得分:0)
这就是您将如何使用belongsToMany
public function feedback()
{
return $this->belongsToMany('App\Worker', 'feedback_id')
}
如果要使用id获取数据,请使用find()
$worker = Worker::find(2);
$worker->feedback();
答案 1 :(得分:0)
我认为您正在尝试实现以下目标。
在模型中
public function feedback()
{
return $this->belongsToMany('App\Worker', 'feedback', 'feedback_id', 'worker_id');
}
在控制器中
$id = 2;
$result = Worker::whereHas('feedback',function($q) use($id){
$q->where('worker_id',$id);
});
在laravel doc中了解->whereHas
答案 2 :(得分:0)
您不能在模型关系中使用where函数。
public function feedback()
{
return $this->belongsToMany('App\Worker', 'feedback_id', 'worker_id');
}
在控制器中
$result = Worker::find(2);
$worker->feedback();
答案 3 :(得分:0)
在您的模型中
Worker.php模型
public function feedback()
{
return $this->belongsToMany('App\Worker', 'feedback', 'worker_id','feedback_id');
}
Controller.php
$id = 7;
$result = Worker::with('feedback')->where('id',$id)->first();
echo '<pre>';
print_r($result->toArray());
exit;
或者在get方法中
$results = Worker::with('feedback')->get();
foreach($results as $result){
if(!empty($results->feedback)){
echo '<pre>';
print_r($result->feedback->toArray());
exit;
}
}
答案 4 :(得分:0)
感谢大家回答我的问题。我找到了答案。这是我的解决方案,对我来说很有效,
$id = 7
$result = Worker::with(['feedback' => function($q) use($id){
$q->where('worker_id',$id);
}]);