Поле Phalcon ORM связано с другим полем в той же таблице - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующая таблица в моей базе данных mysql

mysql

У меня есть модель Shipment, и я использую ORM Phalcon для взаимодействия с моимDB.Поле master_id в этой таблице на самом деле является id другого необработанного, но в той же таблице, как вы можете видеть на рисунке.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); в моемКонтроллер, я вижу master_id из Shipment.

Я хочу вызвать другую функцию из моей модели Shipment, чтобы получить все SubShipments как коллекцию моделей Shipment или, по крайней мере, массив с моделями Shipment.,

Или даже лучше, если бы ShipmentModel::findFirst($id); мог заполнить SubShipments автоматически (если есть), было бы лучше!

Я действительно не знаю, если $this->hasManyчто у меня там правильно, так что если кто-то может показать мне, как действовать, я был бы благодарен:)

1 Ответ

0 голосов
/ 01 июня 2018

Вам нужно предоставить полное пространство имен, а не только имя класса - для решения этой проблемы Model 'Shipment' could not be loaded.Лучше всего добавить псевдоним:

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

А затем просто используйте:

Shipment::findFirst()->getSubShipments(), вы можете добавить такой метод, если хотите, и выполните return $this->getRelated('subShipments')

...