Фалькон найти с условиями связи моделей

У меня есть этот код модели:

class TvguideChannel extends Model{

public function initialize() {
$this->setSource('tvguide_channel');
$this->setConnectionService('db');

$this->hasMany('code', __NAMESPACE__.'\Tvguide', "ch_code", ['alias' => 'Tvguide']);
}

public function getSource() {
return 'tvguide_channel';
}
}

И контроллер:

    $data = TvguideChannel::find();
$dateDetails = $data->getTvguide(['order' => '$_POST["time"] DESC']);

$paginator = new PaginatorModel(
array(
"data" => $data,
"limit" => $limit,
"page" => $curPage
)
);

$items = $paginator->getPaginate();

Это не работает. Как я могу использовать колонки из модели Tvguide в контроллере?
Спасибо за помощь.

1

Решение

Ваш код контроллера вернет TvguideChannel пример.
Чтобы получить доступ к отношению, вы должны использовать псевдоним, который вы определили выше.

$data->Tvguide

Выше должны содержать все Tvguide для этой записи.

Вот более подробный пример hasMany():

$this->hasMany(
'id', // The primary key in your main table
'Models\ServicesVideos', // The Model you are joining
'service_id', // Foreign key for main table
[
'alias' => 'videos', // Alias which you use later to access the relation
// additional parameters like where, order, limit etc...
'params' => [
'order' => 'position ASC',
'conditions' => 'type = :type:',
'bind' => [
'type' => get_class($this)
]
]
]
);

ОБНОВИТЬПример передачи параметров в само отношение.

Код модели:

class Orders extends BaseModel
{
public function initialize()
{
$this->hasMany('id', 'Models\OrderDetails', 'order_id', [
'alias' => 'details',
]);
}
}

Код контроллера:

// We want only related records with price higher than 9.00
$order = \Models\Orders::findFirst(17);
$orderDetails = $order->getDetails([
'conditions' => 'price > 9.00'
]);

ОБНОВЛЕНИЕ 2

find() Метод возвращает Resulset, что означает, что вы не можете использовать напрямую $data->getTvguide, Вы должны перебирать каждую запись и получать доступ к соответствующим записям.

$data = TvguideChannel::find();
foreach ($data as $item) {
// This will return related guides for each channel.
$dateDetails = $item->getTvguide(...);
}
0

Другие решения

Если вам нужно выяснить, откуда родомая модель, то вам нужно использовать построитель запросов.

0

По вопросам рекламы [email protected]