Не уникальный псевдоним таблицы в таблицах данных Laravel

#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');