Как передать параметр из контроллера в модель с помощью метода? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть модель,

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), если вошел в систему работник с идентификатором 7, я хочу отобразить все 10 работников и вместе с идентификатором работника 7, я также хочу показать его отзывы,это мое требование.

Ответы [ 6 ]

0 голосов
/ 23 сентября 2019

Спасибо всем, кто ответил на мой вопрос.Я нашел свой ответ.Это мое решение, и оно работает для меня,

$id = 7
$result = Worker::with(['feedback' => function($q) use($id){
               $q->where('worker_id',$id);
}]);
0 голосов
/ 23 сентября 2019

В вашей модели

Модель 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;

Илив методе получения

$results = Worker::with('feedback')->get();

foreach($results as $result){
    if(!empty($results->feedback)){
        echo '<pre>';
        print_r($result->feedback->toArray());
        exit;
    }
}
0 голосов
/ 23 сентября 2019

Нельзя использовать функцию where в отношениях модели ..

public function feedback()
{
return $this->belongsToMany('App\Worker', 'feedback_id', 'worker_id');
}

В контроллере

 $result = Worker::find(2);
 $worker->feedback();
0 голосов
/ 23 сентября 2019

Я думаю, вы пытаетесь достичь, как показано ниже.

В модели

   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);
           });

Читайте о ->whereHas в документ Laravel

0 голосов
/ 23 сентября 2019

Вот как вы будете использовать ownToMany

public function feedback()
{
   return $this->belongsToMany('App\Worker', 'feedback_id')
}

И используйте find (), когда вы хотите получить данные, используя id

$worker = Worker::find(2);
$worker->feedback();
0 голосов
/ 23 сентября 2019

Вы можете использовать этот тип кода

public function show($id) 
{
    $result = Worker::findOrFail($id);;
    return view('***', compact('result '));
}

или вы можете написать

public function feedback($this->id)
    {
        return $this->belongsToMany('App\Worker', 'feedback', 'feedback_id', 'worker_id')->where('worker_id',$id);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...