我有这个型号代码:
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模型中的列? 谢谢你的帮助。
答案 0 :(得分:0)
您的控制器代码将返回INSTALLED_APPS = [
...,
'products',
...,
]
个实例。
要访问该关系,您必须使用上面定义的别名。
TvguideChannel
以上内容应包含此记录的所有Tvguide。
以下是$data->Tvguide
:
hasMany()
UPDATE :将参数传递给关系本身的示例。
型号代码:
$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',
]);
}
}
更新2
// We want only related records with price higher than 9.00
$order = \Models\Orders::findFirst(17);
$orderDetails = $order->getDetails([
'conditions' => 'price > 9.00'
]);
方法返回Resulset,这意味着您无法直接使用find()
。您必须迭代每条记录并访问其相关条目。
$data->getTvguide
答案 1 :(得分:0)
如果您需要查找相关模型的位置,则需要使用查询构建器。