我无法访问与从父表到子表的关系,它告诉我:
SQLSTATE [42S22]:未找到列:1054 'where 子句'中的未知列'subMeals.meal_id'(SQL:select * 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 默认期望的名称,但在父类中您没有指定它。因此,它尝试使用不存在的字段执行查询。
编辑指定正确 id 列名称的父模型。