Onotole писал(а): ↑2017.03.01, 22:23
Если вы ловите такую ошибку, то явно указываете в фильтре связь. Так и указывайте в фильтре алиас
Что-то не пойму ваше предложение использовать алис для селекта, оно ведь не сработает, т.к. задается в валидаторе.
Для самого запроса у меня и так используется алиас:
Код: Выделить всё
...
$t1 = self::tableName();
$t2 = MenuItems::tableName();
$this->uniqueSlugFilterClosure = function(Query $query) use($root_name, $t1, $t2) {
$query->innerJoin([$t2 => $t2], "{$t2}.instance_id = {$t1}.id");
$query->andWhere(["{$t2}.root_name" => $root_name]);
}
...
Loveorigami писал(а): ↑2017.03.02, 09:37
и что даст $select = $targetClass::primaryKey()[0]? - post_id
Согласен. Скорее тут такой допил нужен:
Код: Выделить всё
// only select primary key to optimize query
$select = $targetClass::primaryKey();
if(method_exists($targetClass, 'tableName')) {
$alias = $targetClass::tableName() . '.';
$select = array_map(function($pk) use($alias) {return $alias.$pk;}, $select);
}
$query->select($select);