我有4个表:Laravel关系问题
我的关系应该像这样工作:
项目只能有一个大小,颜色和类别。
这应该是工作,但它不是真的。生成的查询返回错误的结果。
这里是我的模型文件:
<?php
class Shop_Item extends Eloquent
{
public static $table = 'items';
public static $timestamps = false;
public function scategory() {
return $this->has_one('Shop_Category','id');
}
public function ssize() {
return $this->has_one('Shop_Size','id');
}
public function scolor() {
return $this->has_one('Shop_Color','id');
}
}
其余各表的模型文件的其余部分是相同的(除表名和型号名称)。因此,当我尝试访问额外的值(大小 - >名称,颜色 - >名称,类别 - >名称)时,我得到错误的结果。
我在我的数据库中有两个测试记录: 项目1和项目2具有不同的颜色,大小和类别。 项目1是蓝色并且具有M的大小, 项目2是绿色的并且具有XL的大小,但不在返回的查询中。这表明我,第2项为红色,并有S.
控制器的尺寸:产生
@forelse($items->results as $i)
{{ $i->name }}
{{ $i->price }}
{{ $i->sex }}
{{ $i->scategory->name }}
{{ $i->scolor->name }}
{{ $i->ssize->name }}
<a href = "{{ URL::to('admin/shop/edit/'.$i->id) }}">Edit</a>
<a href = "#">Delete</a>
@empty
There are no items in the shop.
@endforelse
查询:
<?php
class Admin_Shop_Controller extends Base_Controller {
public function action_index() {
$items = Shop_item::order_by('name')->paginate(10,array('id','name','price','sex','visible','color','size','category'));
return View::make('admin.shop.index')->with('items', $items);
}
查看
0.23ms
SELECT COUNT(`id`) AS `aggregate` FROM `items`
0.28ms
SELECT `id`, `name`, `price`, `sex`, `visible`, `color`, `size`, `category` FROM `items` ORDER BY `name` ASC LIMIT 10 OFFSET 0
0.25ms
SELECT * FROM `item_categories` WHERE `id` IN ('1', '2')
0.21ms
SELECT * FROM `item_sizes` WHERE `id` IN ('1', '2')
0.36ms
SELECT * FROM `item_colors` WHERE `id` IN ('1', '2')
注意在视图中,如果我从其他表中访问这些值,如下所示:
{{ Shop_Color::find($i->color)->name }}
它得到我正确的结果,但我真的不希望查询数据库n + 3次因此。任何建议我做错了什么?
编辑:仍然没有运气。 。:(我做你所列出的变化,他们尝试,但是这件事情仍无法正常工作电流的错误是:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'
SQL: SELECT * FROM `item_colors` WHERE `id` IN (?)
Bindings: array (
0 => 0,
)
我不知道为什么它寻找一个id,我已经改变(
我做了,但$ include包含在模型文件中,因为(主要)我需要这些在前端页面上。但它仍然给了我提到的领域错误的结果。 – peaks 2013-04-11 13:30:28
'return $ this-> has_one('Shop_Category','id');'...你真的认为当你告诉它选择'id'时,它会知道如何选择颜色吗? – 2013-04-11 13:47:56
请参阅我对下面的Phill的评论的评论。 – peaks 2013-04-11 13:49:57