2016-08-09 4 views
1

У меня проблема при использовании hasManyThrough в Laravel. мои таблицы:У вас есть ошибка в hasManyThrough

enter image description here

В модели Branch У меня есть эта

public function works() 
{ 
    return $this->hasManyThrough('App\Work', 'App\Field','branch_id','field_id'); 
} 

и в пути у меня есть этот

$b= App\Branch::all()->first(); 
dd($b->works()->get()); 

и получить эту ошибку:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'fields.branch_id' in 'field list' (SQL: select `works`.*, `fields`.`branch_id` from `works` inner join `fields` on `fields`.`id` = `works`.`field_id` where `fields`.`branch_id` = 1) 
+0

Что вы пытаетесь достичь? – jaysingkar

+0

@jaysingkar пытается получить работу одной ветви –

+0

Невозможно использовать 'hasManyThrough()' во многих отношениях. Хотя вы можете достичь этого несколькими методами, как указано в моем ответе. – jaysingkar

ответ

0

В отношении многих-ко-многим не существует условий для использования hasManyThrough(). Но вы можете достичь этого, используя либо DB::raw(), либо вы можете добавить следующую функцию в свой BaseModel, как указано в этом forum.

public function manyThroughMany($related, $through, $firstKey, $secondKey, $pivotKey) 
    { 
     $model = new $related; 
     $table = $model->getTable(); 
     $throughModel = new $through; 
     $pivot = $throughModel->getTable(); 

     return $model 
      ->join($pivot, $pivot . '.' . $pivotKey, '=', $table . '.' . $secondKey) 
      ->select($table . '.*') 
      ->where($pivot . '.' . $firstKey, '=', $this->id); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^