Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4雄辩/模型关系_Php_Mysql_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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()
对不起,修复了我的评论。