J'ai un problème lors de l'utilisation de hasManyThrough à Laravel. mes tables:
Dans le modèle de branche j'ai ce
public function works()
{
return $this->hasManyThrough("AppWork", "AppField","branch_id","field_id");
}
et en route j'ai cette
$b= AppBranch::all()->first();
dd($b->works()->get());
et obtenez cette erreur:
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)
Réponses:
0 pour la réponse № 1Il n’ya pas de disposition pour utiliser hasManyThrough()
dans la relation plusieurs à plusieurs. Mais vous pouvez y parvenir en utilisant soit DB::raw()
ou vous pouvez ajouter la fonction suivante à votre modèle de base comme indiqué dans cette 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);
}