Php Laravel 4雄辩/模型关系
我正在建立几个模型,希望了解表结构和模型关系的正确方法 假设我们有一家商店,里面有各种商品,每种商品的属性都有大小和颜色 表Php Laravel 4雄辩/模型关系,php,mysql,laravel,laravel-4,eloquent,Php,Mysql,Laravel,Laravel 4,Eloquent,我正在建立几个模型,希望了解表结构和模型关系的正确方法 假设我们有一家商店,里面有各种商品,每种商品的属性都有大小和颜色 表产品 身份证 尺码 颜色标识 价格 表格尺寸 身份证 名字 表格颜色 身份证 名字 型号 class Product extends Eloquent { public function size() { return $this->hasOne('Size', 'id'); } public function co
产品
- 身份证
- 尺码
- 颜色标识
- 价格
尺寸
- 身份证
- 名字
颜色
- 身份证
- 名字
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']}}
轻松地回显产品的颜色/大小。另外,我想传递size的外键size.id
像Product::where('size\u id','5')
而不是它的名称size.name
问题:执行$products=Product::has('size','=','5')->get()
不会给我任何结果,但是执行$products=Product::where('size_id','5')->get()
会给我任何结果
我很困惑,到底出了什么问题?我认为问题在于,您的
::has()
方法正在寻找每个特定产品上正好有5种不同尺寸的产品,这将假设您将在产品模型中使用$this->hasMany('Size')
。其中,::Where()
方法返回产品大小为5的结果
在文档中,他们使用注释示例。一篇帖子会有一个评论列表。您可以找到至少有一条注释的帖子(即Post::has('comments')->get()
),也可以找到有3条以上注释的帖子(即Post::has('comments','>=','3')->get()
)
我认为问题在于,您的
::has()
方法正在寻找每个特定产品上有5种不同尺寸的产品,这将假定您在产品模型中使用$this->hasMany('Size')
。其中,::Where()
方法返回产品大小为5的结果
在文档中,他们使用注释示例。一篇帖子会有一个评论列表。您可以找到至少有一条注释的帖子(即Post::has('comments')->get()
),也可以找到有3条以上注释的帖子(即Post::has('comments','>=','3')->get()
)
你的外部约束设置正确吗?@RobW我刚刚编辑了这篇文章,你是说
$this->belongsTo('Size','Size_id')代码>?还有,你的意思是不是$products=Product::has('size','>=',5)->paginate(15)
@RobW,它给了我一个错误调用undefined method illighted\Database\Query\Builder::size()
抱歉,修复了我的评论。你的外部约束设置正确吗?@RobW我刚刚编辑了这篇文章,你的意思是$this->belongsTo吗('Size','Size_id');
?还有,你的意思是不是$products=Product::has('Size','>=',5)->分页(15)
@RobW,它给了我一个错误调用undefined方法illighted\Database\Query\Builder::Size()
对不起,修复了我的评论。