Phalcon找到了模型关系的条件

时间:2017-12-13 10:00:03

标签: php model phalcon phalcon-orm

我有这个型号代码:

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模型中的列? 谢谢你的帮助。

2 个答案:

答案 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)

如果您需要查找相关模型的位置,则需要使用查询构建器。