Hier sind die Beziehungen:Laravel Eloquent ORM whereHas mit einer foreach-Schleife
Ein Benutzer viele Fähigkeiten hat, gibt es eine Tabelle user_skills verbinden ist. Ich muss diese Tabelle durchsuchen, um die Profile zurückzugeben, die die besondere Fähigkeit haben. Dies ist Teil einer größeren Abfrage, die erstellt wird, deshalb gibt es hier kein -> get().
Benutzermodell
/**
* A user may have many skills
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function skills()
{
return $this->hasMany('App\Core\Platform\Models\UserSkill');
}
Unten ist die Abfrage, die nicht das tut, was ich brauche es. Ich brauche es, um die Benutzer, die die bestimmte Fähigkeit haben, zurückzugeben, basierend auf der ID, die in der Suche übergeben wird (der Wert $ this-> misc ['search_skills']).
// Skills
$this->user = $this->user->whereHas('skills', function ($q)
{
foreach ($this->misc['search_skills'] AS $skill)
{
$q->orWhere('id', $skill);
}
});
Irgendwelche Gedanken darüber, was ich falsch mache oder wie ich das auf eine andere Weise ausführen könnte?
ich denke, dass Sie whereIn (, 'skills' []) verwenden können, das wäre meine Methode des Angriffs –