#php #database #laravel #eloquent
#php #База данных #laravel #красноречивый
Вопрос:
Я использую Eloquent eager load, чтобы показать все дочерние элементы животного в таблице данных Яджры, но я получаю эту ошибку:
Моя функция, в которой я получаю все дочерние элементы:
public function hijos()
{
return $this->belongsToMany('AppGanado', 'hijos_padres', 'id_padre', 'id_hijo');
}
Мой код с данными:
if ($request->ajax()) {
return datatables()
->eloquent(Ganado::where('id_ganado', $id)->with('hijos'))
->toJson();
}
и это:
{data: 'hijos.id_ganado', name: 'hijos.id_ganado'},
{data: 'hijos.codigo_ganado', name: 'hijos.codigo_ganado'},
{data: 'hijos.genero', name: 'hijos.genero'},
Моя функция «hijos» (дочерняя) имеет отношение к самой себе, поэтому я не знаю, как я могу присвоить псевдоним таблице.
Это моя таблица животных:
Что еще я могу сделать?
Ответ №1:
Проблема в том, что модель ссылается на себя.
Решение: вы должны создать псевдоним для таблицы в соединении.
Что-то вроде этого:
Ganado::select('ganado.*')->leftJoin('ganado AS myAlias', 'ganado.mycolumn', '=', 'myAlias.other_column');