yii2, есть модель поиска:
class ProductsBarcodesSearch extends ProductsBarcodes
{
public function rules()
{
return [
[['id'], 'integer'],
[['barcode','product_id', 'code', 'name'], 'safe'],
];
}
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
public function search($params)
{
$query = ProductsBarcodes::find()->joinWith('product');
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere(['product_barcode.id' => $this->id]);
// grid filtering conditions
$query
->andFilterWhere(['like', 'product.name', $this->product_id])
->andFilterWhere(['like', 'product_barcode.barcode', $this->barcode]);
return $dataProvider;
}
}
так все работает (поиск по имени из связанной таблицы), но стоит сделать так:
$query
->andFilterWhere(['like', 'product.name', $this->product_id])
->andFilterWhere(['like', 'product.code', $this->product_id]) //вот это добавил
->andFilterWhere(['like', 'product_barcode.barcode', $this->barcode]);
и все ломается, перестает искать как по имени, так и по полю code
как правильно тянуть эти данные из связанной таблицы, чтобы работал поиск?
нашел решение.
нужно добавить новые свойства классу:
class ProductsBarcodesSearch extends ProductsBarcodes
{
public $pname;
public $pcode;
задать значение, по которому будут искаться данные:
->andFilterWhere(['like', 'product.name', $this->pname])
->andFilterWhere(['like', 'product.code', $this->pcode])
прописать во view
в атрибутах эти свойства
[
'attribute' => 'pcode',
'label' => 'Внутренний код',
'value' => function($model){
if ($model->product_id){
return $model->product->code;
}
return 'Нет кода';
}
],
[
'attribute' => 'pname',
'label' => 'Название продукта',
'format' => 'html',
'value' => function($model){
if ($model->product_id){
return Html::a($model->product->name, \yii\helpers\Url::to(['/products/view?id=' . $model->product->id]));
}
return 'Нет имени';
}
],
единственное что я пока не пока как сделать, это сортировка по этим полям. если знаете как реализовать, напишите.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собираюсь строить систему мониторинга ошибок на основе сислога => ELKПишу ошибки из PHP в сислог:
Проблема такая: один и тот же SQL запрос из PHP может идти например 45 секунд (логируется все точно - это только время запроса, а не загрузки всей...
Есть строка Приход № 5146 12/12/2018 Имя Перейти как получить = № 5146 12/12/2018 Имя
библиотека opensslНеобходимо использовать метод MD5