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

Phalcon ORM field has relation with another field in same table

我的 mysql 数据库中有以下 table

我有一个模型 Shipment,我正在使用 Phalcon 的 ORM 与我的数据库进行交互。这个table中的master_id字段实际上是另一个raw的id,但是在同一个table中,如图所示。 id=1 是主装运,id=2 和 id=3 是子装运。

我现在的模型是这样的

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); 时,我可以看到 Shipmentmaster_id

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

或者更好,如果 ShipmentModel::findFirst($id); 可以自动填充 SubShipments(如果有的话)那就最好了!

我真的不知道那边的 $this->hasMany 是否正确,所以如果有人能告诉我如何继续,我将不胜感激:)

您需要提供完整的命名空间,而不仅仅是 class 名称 - 才能解决这个 Model 'Shipment' could not be loaded。最好是添加别名:

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

然后只需使用:

Shipment::findFirst()->getSubShipments() 如果你愿意,你可以添加这样的方法return $this->getRelated('subShipments')