Heim  >  Fragen und Antworten  >  Hauptteil

Suchen Sie mit Laravel whereRelation nach einer Zeichenfolge in mehreren Spalten einer relationalen Tabelle

Ich habe eine Beziehung zu räumlichen Modellen,

public function user()
{
  return $this->belongsTo(User::class)->withTrashed();
}

In meinem Controller möchte ich nach einer Zeichenfolge aus den Spalten „Vorname“ und „Nachname“ in der Tabelle „Benutzer“ suchen.

Aber ich habe die Syntax zum Schreiben der „oder“-Bedingung in whereRelation nicht gefunden.

$query = new Space();

$query = $query->with('user')->whereRelation('user', 'first_name', 'like', '%' . $request->search . '%');

Wie suche ich mit whereRelation nach einer Zeichenfolge in mehreren Spalten einer relationalen Tabelle?

P粉590929392P粉590929392237 Tage vor314

Antworte allen(1)Ich werde antworten

  • P粉511749537

    P粉5117495372024-03-20 16:38:40

    选项 1。您可以分别从两个字段中搜索:

    Space::with('user')->whereHas('user', function ($query) use ($request) {
        $query->where('first_name', 'LIKE', '%' . $request->search . '%')
            ->orWhere('last_name', 'LIKE', '%' . $request->search . '%');
    });
    

    选项 2。我猜您真正想要的是将两个字段连接在一起(中间有一个空格),然后将您的搜索与该字段进行比较:

    use Illuminate\Support\Facades\DB;
    
    // ...
    
    Space::with('user')->whereHas('user', function ($query) use ($request) {
        $query->where(
            DB::raw('CONCAT(first_name, " ", last_name)'),
            'LIKE',
            '%' . $request->search . '%'
        );
    });
    

    Antwort
    0
  • StornierenAntwort