0

WHERE name LIKE %acme%リレーションシップを使用してフィールド値を(のように) 検索するための正しい手順は何ですか?

Client属しているモデルがあるとしましょうCompany。ここで、フィールドを介してフィルタリング (検索) したいと思い$client->company->nameます。

私はもう試したClient::where('company.name', 'LIKE', 'acme')->get();

しかし、うまくいきません...

熱心な読み込みを設定しました...$includes = array('company')

編集:私の関係が機能していることを忘れていました...

ありがとうございました!

4

3 に答える 3

0

理解が深まったので、Laravelの積極的な読み込みではJOINクエリを使用しません。これは、他のORMアプローチとは異なり、FluentQueryBuilder構造を使用した結合でEloquentを使用できると言われています。そのため、Eloquentを使用して関連モデルの値で検索することはできません。結合にはFluentインターフェースを使用します:http: //laravel.com/docs/database/fluent#joins

Client :: join(....を実行することで、頻繁なモデルで流暢なインターフェイスを引き続き使用できます。この種の機能については、Doctrineのようなものを検討する必要があります。ただし、より急な学習曲線に備えてください。

于 2013-02-19T12:39:30.113 に答える
0

熱心な読み込みを使用してみてください。

$client = Client::with(array('company' => function($query) {
    $query->where('name', 'LIKE', 'acme');
}))->first();
于 2013-02-19T12:22:15.763 に答える