Laravel 4 Отношения между мужчинами и женщинами

Я создаю несколько моделей, которые хотят знать правильный подход к структуре таблицы и отношениям модели.

Предположим, у нас есть магазин, содержащий продукты, каждый со свойствами и цветом.

Настольные products

  • Я бы
  • size_id
  • color_id
  • цена

sizes стола

  • Я бы
  • имя

colors стола

  • Я бы
  • имя

модели

 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'] }} цвет / размер продукта, используя {{ Product->size['name'] }} . Кроме того, я хочу передать Eloquent размер внешнего ключа size.id Например, Product::where('size_id', '5') а не его имя size.name .

Проблема: Выполнение $products = Product::has('size', '=', '5')->get() не дает мне никаких результатов, но делает $products = Product::where('size_id', '5')->get() .

Я довольно смущен, что пошло не так?