如何通过方法将参数从控制器传递到模型上?

时间:2019-09-23 05:45:44

标签: laravel parameters model

我有一个模特,

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的工作人员,我还要显示他的反馈。这是我的要求。

5 个答案:

答案 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);
}]);