web-dev-qa-db-ja.com

Laravel eloquent where error with <>

ネイティブPHPでwhereのクエリがあります

ここで、type <> 'point'

そして私は雄弁なlaravelに変換しようとします

 ->with('payments',function($query){
      $query->where('type','<>','point');
 })

しかし、次のようなエラーが表示されます。

mb_strpos()は、パラメーター1が文字列であり、オブジェクトが指定されていることを想定しています。

8

間違った構文を使用しています。 with() の正しい構文は次のとおりです。

->with(['payments' => function ($query) {
    $query->where('type', '<>', 'point');
}])
31
Alexey Mezenin

クエリ内の動的パラメータを解析するには、次のことを試してください。

$string = 'points';
->with(['payments' => function ($query) use ($string) {
    $query->where('type', '<>', $string);
}])

これはうまくいくでしょう!

1
Manish J

クエリで行う必要があるのがそれだけの場合は、次のようにチェーンすることができます。

->with('payments')->where('type', '<>', 'point') //chain more after this

typepointと等しくない支払いをフィルタリングしようとしている場合、正解は this である必要があります。

1
Mike Harrison