vendredi 5 avril 2019

Laravel 5 select items by many-to-many relationship

I have many-to-many relationship.

 class Girl extends Model
{
 public function target()
  {
    return $this->belongsToMany('App\Target','girl_target');
  }
 }

class Target extends Model{   
 public function girl()
{
    return $this->belongsToMany('App\Girl', 'girl_target');
}

}


     $girls = Girl::query();

    $girls
        ->where('sex', $with_met)
        ->where('meet', $who_met)
        ->where('age', '>=', $request->min_age)
        ->where('age', '<=', $request->max_age);

    if ($request->get('targets')) {
        //$book->whereHas('categories', function($query) use($request) {
                $girls->whereHas('target', function ($query) use ($request) {
            $query->whereIn('id', $request->get('targets'));
        });
    }
    $girls=$girls->get();

And return error:

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where >clause is ambiguous (SQL: select * from girls where sex = famele and >meet = male and age >= 18 and age <= 40 and exists (select * from >target inner join girl_target on target.id = >girl_target.target_id where girls.id = girl_target.girl_id and >id in (1)))

How to choose correctly using relationships?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire