我有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