Как сделать relation с оператором like?

458
02 февраля 2017, 03:40

Здравствуйте, скажите пожалуйста, как настроить реляцию таким образом, что бы сопоставление реляции работало с оператором like, а не where, дело вот в чем:

CategoryModel:

public function getProducts()
{
    return $this->hasMany(ProductModel::className(), ['category_id' => 'id']);
}
public function getBrands()
{
    return $this->hasMany(BrandModel::className(), ['id' => 'brand_id'])->via('products');
}  

Так мы получаем определенный список модели BrandModel, но, не совсем полный, в CategoryModel есть данные с полем path=3.10, так же как и в ProductModel список в котором значение path=3.10.13, и мне нужно выполнить реляцию так:

CategoryModel:

public function getProducts()
{
    return $this->hasMany(ProductModel::className(), ['path' => 'path']);
}  

И при этом, хочу получить не category_model.path = product_model.path, а category_model.path like product_model.path. Подскажите пожалуйста, есть решение в данном случаи? Буду очень благодарен за ваше внимание.

Запрос получается должен быть таким: SELECT * FROM TABLE category JOIN TABLE product ON product.path LIKE '%'+ category.path +'%'

READ ALSO
Не получается обновить запись в бд

Не получается обновить запись в бд

Судя по всему функция mquery только возвращает замененный SQL запрос, но не выполняет егоНеобходимо в конце функции запускать SQL запрос, например...

427
Сортировка данных из mysql

Сортировка данных из mysql

Я учусь, поэтому вопрос может показаться глупым )) Есть скрипт, который выводит из базы mysql данные, все работает, только есть один момент - рабочая...

339
openserver очень медленно выполняется функция is_dir

openserver очень медленно выполняется функция is_dir

Есть сайт (даже несколько сайтов, на разных cms)На хостинге они работают быстро, на ноуте - медленно

385