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

标签 php mysql model phalcon phalcon-orm

我的 mysql 数据库中有下表

mysql

我有一个模型 Shipment我正在使用 Phalcon 的 ORM 与我的数据库进行交互。 master_id此表中的字段实际上是 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); 时在我的 Controller 中,我可以看到 master_idShipment .

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

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

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

最佳答案

您需要提供完整的命名空间,而不仅仅是类名 - 以解决此无法加载模型“Shipment”。最好是添加别名:

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

然后只需使用:

Shipment::findFirst()->getSubShipments() 如果需要,您可以添加这样的方法并执行 return $this->getRelated('subShipments')

关于php - Phalcon ORM 字段与同一表中的另一个字段有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50640140/

相关文章:

MySQL 数组/项目列表和性能

mysql - 为什么我不能以这种方式添加外键约束?

ruby-on-rails - Rails 通过缺少列命名空间 has_many

node.js - Express 中的数据库查询错误 : Router. use() 需要一个中间件函数,但得到一个未定义的

php - VSCode php-swagger 3.0 注释插件?

php - 如何使用 PHP 检查 MySQL 数据库中的 10 个最新条目是否以字符串开头?

php - 我是否必须始终将所有参数传递给 PHP 函数?

php - 如何使用 PHP 检查/确定 session 年龄

php - 有谁知道为什么这个 PHP 不会将数据写入我的数据库?

python - Django抽象模型继承