1

ネストされた継承を持つテーブルを取得し、特定の列に対してフィルター処理しようとしています。そして、それを簡単に行う方法が見つかりません。

テーブルショップの魔女には多くの場所があり(場所には1つの都市があります)、多くのアクションがあります

Eloquent を使用してすべてを一度に取得し、特定の列をフィルター処理したいと考えています。

これはショップテーブルをフィルタリングする方法でしたが、テーブルの場所とアクションをフィルタリングする方法がわかりません。

$this->shop->with('locations')->with('actions')->get(array('id','name','recommended','category_id'));

私はこのようなものが必要です:

$this->shop
->with('locations',Location::with('city', City::get(array('id','name')))->get(array('id','name')))
->with('actions', Action::get(array('id','name')))->get(array('id','name')););
4

1 に答える 1

0

Laravel Eloquent: 結合されたテーブルから特定の列のみを取得する方法を参照してください

これを行う最も簡単な方法は、モデル内の列をフィルター処理することです (上記のリンクの一番上の回答に記載されているように)。ただし、動的クエリを作成する場合は不便です。

理論的には、次のことができるはずです。

$this->shop->with(array('locations' => function($query) {
                                            $query->select('id', '...etc...');
                                       }

...残念ながら、select(); では機能しないようです。テストしたところ、空の配列が得られました。ただし、他の方法は機能します。

$this->shop->with(array('locations' => function($query) {
                                            $query->orderBy('id', 'DESC');
                                       }

Fluent Query Builder を使用したほうがよい場合があります。ORM ほど「セクシー」でもトレンディーでもありませんが、動的クエリを扱う場合は使いやすいと思います。

于 2013-08-26T16:20:34.260 に答える