ho un'attività: aggiungere alla ricerca del modello di ricerca per nome completo. Il nome completo è nome + cognome. Quindi ho bisogno di costruire domanda comeyii2 Filtro 'LIKE LIKE' ActiveQuery
WHERE first_name LIKE '%var%' OR last_name LIKE '%var%'
L'unico modo ho potuto farlo:
$query->andFilterWhere([
'OR',
'profiles.first_name LIKE "%' . $this->userFullName . '%" ',
'profiles.last_name LIKE "%' . $this->userFullName . '%"'
]);
Ma non mi piace perché la sua non sicuri%. Non so come ... Penso che ci sia il modo per costruire tale query con yii2 costruttore attivo, e vorrei entrare in risultato si dovrebbe occupare come
$query->andFilterWhere(['LIKE', 'profiles.first_name', $this->userFullName]);
$query->andFilterWhere(['OR LIKE', 'profiles.last_name', $this->userFullName]);
Il problema è nella query come, potrebbe usare array come i valori che l'attributo sarà comparso ma non posso usare array come elenco di attributi con cui confrontarlo.
o
$subQuery1 = Profile::find()->Where(['LIKE', 'profiles.first_name', $this->userFullName]);
$subQuery2 = Profile::find()->Where(['LIKE', 'profiles.last_name', $this->userFullName]);
//i think its overloaded(3 queries insteadof 1 but still) and the final query
$query->andFilterWhere([
'OR',
$subQuery1,
$subQuery2
]);
Tutte le idee come costruire query di whithout "%"?
è che funziona? Non posso controllare perché ho già lasciato il lavoro, ma se funziona molto. :) –
aiuta - è una magia –
come trovare valori separati da virgola usando FIND_IN_SET? –