0 レビュー
1 回答
php-Laravel Eloquent with()を使用してネストされたテーブルから特定の列を取得します
ネストされた継承を持ち、特定の列に対してフィルター処理されたテーブルを取得しようとしています。そして、それを簡単に行うための方法を見つけることができません。
テーブルショップの魔女には多くの場所があり(場所には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')););
わからない
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');
}
FluentQueryBuilderを使用した方がよい場合があります。 ORMほど「セクシー」でもトレンディでもありませんが、動的クエリを処理するときに使いやすいと思います。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。