Выборка после hasMany viaTable
Добавлено: 2018.03.29, 05:07
Всем добра.
нужен совет по реализации/оптимизации. Код сильно упрощён, но это не важно.
Есть 2 класса
Мне нужно получить посты от итема. Но не полный список, а только где $post->status = 1
Сейчас я делаю примерно так:
$postArr - наш искомый массив объектов. Я понимаю, что это нерационально. Как мне упростить код, избежать лишних вызовов sql? Может быть возможна какая нибудь конструкция из ActiveQuery ?
Спасибо.
нужен совет по реализации/оптимизации. Код сильно упрощён, но это не важно.
Есть 2 класса
Код: Выделить всё
class PostModel extends \yii\db\ActiveRecord {
public $id;
public $topic_id;
public $status;
public function getCount() {};
}
Код: Выделить всё
class ItemModel extends \yii\db\ActiveRecord {
public $image;
public function getPosts() {
return $this->hasMany(PostModel::className(),['id'=>'post_id'])
->viaTable('items_posts', ['item_id' => 'id']);
}
}
Сейчас я делаю примерно так:
Код: Выделить всё
foreach ($item->posts as $key=>$post) {
if ($post->status== 1) {
$posrArr[] = $post;
}
}
Спасибо.