Phalcon ORM字段与同一表中的另一个字段有关

时间:2018-06-01 09:22:45

标签: php mysql model phalcon phalcon-orm

我的mysql DB中有以下表格

mysql

我有一个模型Shipment,我正在使用Phalcon的ORM与我的数据库进行交互。此表中的master_id字段实际上是另一个原始的id,但在同一个表中,如图所示。 id = 1是主货件,id = 2,id = 3是Subshipments。

我的模特现在看起来像这样

class Shipment extends Model
{
    protected $id;
    protected $hawb;
    protected $master_id;

    public function initialize()
    {
        parent::initialize();

        $this->hasMany(
            'id',
            'Shipment',
            'master_id'
        );
    }
    //setters and getters are here
}

当我在我的控制器中使用$shipment = ShipmentModel::findFirst($id);时,我可以看到master_id的{​​{1}}。

我想要的是,从我的Shipment模型中调用另一个函数,以便将所有Shipment检索为SubShipments模型的集合,或者至少检索一个带{的数组{1}}模型。

或者甚至更好,如果Shipment可以自动填充Shipment(如果有的话)将是最好的!

我真的不知道我所拥有的ShipmentModel::findFirst($id);是否正确,所以如果有人能告诉我如何继续,我将不胜感激:)

1 个答案:

答案 0 :(得分:3)

您需要提供完整的命名空间,而不仅仅是类名,才能解决此问题Model 'Shipment' could not be loaded。最好是添加别名:

$this->hasMany(
    'id',
    Shipment::class,
    'master_id',
    ['alias' => 'subShipments'])
);

然后使用:

Shipment::findFirst()->getSubShipments()您可以根据需要添加此类方法并执行return $this->getRelated('subShipments')