У меня есть этот код модели:
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 в контроллере?
Спасибо за помощь.
Ваш код контроллера вернет 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(...);
}
Если вам нужно выяснить, откуда родомая модель, то вам нужно использовать построитель запросов.