There is a Category model, it is connected like this with three other models
public function getSerials(){ return $this->hasMany(Serial::className(),['id'=>'id_serial'])->viaTable('fl_cat_serial', ['id_cat' =>'id']); } public function getFilms(){ return $this->hasMany(Serial::className(),['id'=>'id_film'])->viaTable('fl_cat_serial', ['id_cat' =>'id']); } public function getMfilms(){ return $this->hasMany(Serial::className(),['id'=>'id_mfilm'])->viaTable('fl_cat_serial', ['id_cat' =>'id']); } there was no need to use three models together for the listveiw widget and shove it in the provider one I know you can use so
$category= new Category; $serialDataProvider = new ActiveDataProvider([ 'query' =>$category->getSerials(), 'pagination'=>[ 'pageSize'=>60, ] ]); but how to use three at the same time I broke my head trying to solve it with the help of join like this
$querys=CatSerial::find() ->select('fl_serial.id,fl_serial.name_serial,fl_serial.slug_serial,fl_serial.nesting,fl_film.id,fl_film.name_film,fl_film.slug_film,fl_film.nesting,fl_mfilm.id,fl_mfilm.name_mfilm,fl_mfilm.slug_mfilm,fl_mfilm.nesting') ->leftJoin('fl_serial','fl_cat_serial.id_serial = fl_serial.id') ->leftJoin('fl_film','fl_cat_serial.id_film = fl_film.id') ->leftJoin('fl_mfilm','fl_cat_serial.id_mfilm = fl_mfilm.id ') ->where(['id'=>$categoryThe->id]) ->groupBy('fl_cat_serial.id_serial, fl_cat_serial.id_film,fl_cat_serial.id_mfilm'); it gives me the following SQLSTATE error [23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous
The SQL being executed was: SELECT COUNT(*) FROM (SELECT `fl_serial`.`id`, `fl_serial`.`name_serial`, `fl_serial`.`slug_serial`, `fl_serial`.`nesting`, `fl_film`.`id`, `fl_film`.`name_film`, `fl_film`.`slug_film`, `fl_film`.`nesting`, `fl_mfilm`.`id`, `fl_mfilm`.`name_mfilm`, `fl_mfilm`.`slug_mfilm`, `fl_mfilm`.`nesting` FROM `fl_cat_serial` LEFT JOIN `fl_serial` ON fl_cat_serial.id_serial = fl_serial.id LEFT JOIN `fl_film` ON fl_cat_serial.id_film = fl_film.id LEFT JOIN `fl_mfilm` ON fl_cat_serial.id_mfilm = fl_mfilm.id WHERE `id`=1 GROUP BY `fl_cat_serial`.`id_serial`, `fl_cat_serial`.`id_film`, `fl_cat_serial`.`id_mfilm`) `c`