https://bilisimkitabi.com/yazilar?kategori=php&kategori=java&kategori=python&yazar=10&yazar=24&yazar=27
Yukarıda ki URL'den gelen değerler alıp bir array(dizi) içine ekleyip sorgu içinde kullanacağız.
public function actionIndex()
{
$kategoriler = Yii::$app->MyComponents->multiGetValues("kategori");
$yazarlar = Yii::$app->MyComponents->multiGetValues("yazar");
$searchModel = new YazilarSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->query->joinWith('kategoriler');
$dataProvider->query->joinWith('yazarlar');
$dataProvider->query->andFilterWhere(['kategori.kategoriID' => $kategoriler]);
$dataProvider->query->andFilterWhere(['yazar.yazarID' => $yazarlar]);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
Ancak bu işlemler için backend/components
içinde multiGetValues adında bir fonksiyon yazmamız gerekecek. Bu fonksiyon URL üzerinden gelen değerleri bir dizi içine ekleyecek ve biz bu diziyi sorgu içinde kullanacağız.
public function multiGetValues($attribute)
{
$query = $_SERVER['QUERY_STRING'];
$arr = array();
if(!empty($query)){
foreach (explode('&', $query) as $pair) {
list($key, $value) = explode('=', $pair);
if('' == trim($value)){
continue;
}
if($attribute== $key){
array_push($arr,urldecode($value));
}
}
}
return $arr;
}