我正在设置几个模型,想知道表结构和模型关系的正确方法。
假设我们有一个包含产品的商店,每个产品都有属性 size 和 color。
桌子products
- ID
- size_id
- color_id
- 价格
桌子sizes
- ID
- 姓名
桌子colors
- ID
- 姓名
楷模
class Product extends Eloquent {
public function size() {
return $this->hasOne('Size', 'id');
}
public function color() {
return $this->hasOne('Color', 'id');
}
}
class Size extends Eloquent {
public function products() {
return $this->belongsTo('Product', 'size_id');
}
}
class Color extends Eloquent {
public function products() {
return $this->belongsTo('Product', 'color_id');
}
}
这样,我可以轻松地使用{{ Product->size['name'] }}
. 另外,我想传递 Eloquent 大小的外键size.id
,Product::where('size_id', '5')
而不是它的 name size.name
。
问题:做$products = Product::has('size', '=', '5')->get()
不会给我任何结果,但做$products = Product::where('size_id', '5')->get()
会。
我很困惑,到底出了什么问题?