【发布时间】:2014-01-02 06:17:28
【问题描述】:
这应该真的简单,但我似乎无法弄清楚。
有两个表:
`images`
|- `id`
|- `path`
|- `name`
`foods`
|- `id`
|- `image_id`
还有两种型号:
class Image extends Eloquent {
public function food() {
return $this->belongsToMany('Food');
}
}
class Food extends Eloquent {
public function image() {
return $this->hasOne('Image');
}
}
这个想法是每个food 都有一个image 通过其foods 表行中的image_id 列与之关联。一个image 可以关联多种食物。
我希望能够在控制器中做这样的事情:
$food = Food::with('image')->find(1);
...但是,当然,我收到以下错误:
SQLSTATE[42S22]:未找到列:1054 'where 子句'中的未知列'images.food_id'(SQL:select * from images where images.food_id in (1))
...因为 Eloquent 希望每个 image 都有一个 food_id。但是,当然,images 没有food_ids。食物有image_ids。
请帮助沮丧的程序员。 :)
谢谢!
编辑:
非常感谢你,决斗者。
我已将我的模型更新为:
class Image extends Eloquent {
public function food() {
return $this->hasMany('Food');
}
}
class Food extends Eloquent {
public function image() {
return $this->belongsTo('Image');
}
}
...现在Food::with('image') 调用有效。
我真的不明白为什么“食物”属于“图像”……也许有人可以解释为什么语法与这里的语法不匹配?
【问题讨论】:
标签: php mysql orm laravel relational-database