1

テーブル構造とモデルの関係への正しいアプローチを知りたいいくつかのモデルを設定しています。

それぞれの商品にサイズと色のプロパティがあるショップがあるとします。

テーブルproducts

  • ID
  • size_id
  • color_id
  • 価格

テーブルsizes

  • ID
  • 名前

テーブルcolors

  • ID
  • 名前

モデル

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'] }}。また、Eloquent にname ではなくサイズの外部キーsize.idlikeを渡したいです。Product::where('size_id', '5')size.name

問題:やっ$products = Product::has('size', '=', '5')->get()ても結果が出ないのに、やって$products = Product::where('size_id', '5')->get()みる。

私はかなり混乱しています、何がうまくいかなかったのですか?

4

1 に答える 1

4

問題は、あなたの::has()メソッドが特定の製品ごとに正確に 5 つの異なるサイズの製品を探していることだと思います。これは$this->hasMany('Size')、製品モデルで使用することを前提としています。メソッド::where()は、製品のサイズが 5 の結果を返します。

ドキュメントでは、コメントの例を使用しています。投稿にはコメントのリストが含まれます。コメントが 1 つ以上ある投稿 (例: Post::has('comments')->get()) または 3 つ以上のコメントがある投稿 (例: ) を見つけることができますPost::has('comments', '>=', '3')->get()

http://laravel.com/docs/eloquent#querying-relations

于 2013-06-14T06:40:26.707 に答える