Я не могу получить доступ к отношениям with из родительской таблицы в дочернюю таблицу, он говорит мне:
SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «subMeals.meal_id» в «предложении where» (SQL: выберите * from
subComidas
wheresubComidas
.comida_id
in (1, 2))
Странно то, что я проверяю модели, и они в порядке. На самом деле, я могу без проблем вызвать отношение из дочерней таблицы или других пищевых отношений.
Шаблон таблицы питания
class comida extends Model
{
protected $table = 'comidas';
protected $fillable = [
'id',
'cm_nombre',
'created_at',
'us_id',
'updated_at'
];
// SUS HIJOS
public function planesAlimentarios(){
return $this->belongsToMany('frust\planesAlimentario');
}
public function alimentos(){
return $this->belongsToMany('frust\alimento');
}
public function subComida(){
return $this->hasMany('frust\subComida');
}
// SUS PADRES
public function User(){
return $this->belongsTo('frust\User','us_id','id');
}
}
Модель была дочерью:
class subComida extends Model
{
protected $table = 'subComidas';
protected $fillable = [
'id',
'sbc_nombre',
'sbc_porcentaje',
'created_at',
'cm_id',
'updated_at'
];
// SUS HIJOS
// SUS PADRES
public function Comida(){
return $this->belongsTo('frust\Comida','cm_id','id');
}
}
Когда я пытаюсь вывести объекты из родительской таблицы, выдает ошибку:
$comidas = comida::with(['subComida'])->paginate(5);
dd($comidas);
Как можно попробовать принести объекты из дочерней таблицы (а она их без проблем приносит)
$comidas = subComida::with(['Comida'])->paginate(5);
dd($comidas);
Я также пытался перезаписать первичные ключи с помощью $primaryKey.
Версия Laravel: 5.4
Когда вы определяете отношения
subComida
в моделиcomida
, вы также можете указать поле внешнего ключа в качестве второго параметра и локальный ключ в качестве третьего параметра на случай, если эти два параметра не следуют схемам Laravel по умолчанию, как вы, особенно с иностранный ключ:В модели дочернего класса вы указываете, что имя ID не то, которое Laravel ожидает по умолчанию, а в родительском вы его не указываете. Поэтому он пытается выполнить запрос с несуществующим полем.
Отредактируйте родительскую модель, указав правильное имя столбца идентификатора.