Имам проблем, когато използвам hasManyThrough в Laravel. моите маси:
В модела на клона имам това
public function works()
{
return $this->hasManyThrough("AppWork", "AppField","branch_id","field_id");
}
и по маршрута имам това
$b= AppBranch::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 за отговор № 1Няма разпоредба за използване hasManyThrough()
в отношение много към много. Но можете да постигнете това, като използвате и двете DB::raw()
или можете да добавите следната функция към вашия BaseModel, както е дадено в това форум.
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);
}