【问题标题】:Phalcon Model Relationship SelectPhalcon 模型关系选择
【发布时间】:2015-07-26 23:23:49
【问题描述】:

我有两个这样的模型:

Inv(发票)

InvItem(发票行项目)

尝试通过 Inv 模型检索 InvItem 时,我收到 500 错误。屏幕上或日志文件中不会报告任何错误。参考https://docs.phalconphp.com/en/latest/reference/models.html#unidirectional-relationships

服务代码

$invoice = Inv::findFirst($id);
$item = $invoice->invItem;

投资模型关系

Primary: inv_id
$this->hasMany('inv_id', 'InvItem', 'inv_id');

InvItem 模型关系

Primary: inv_item_id
$this->belongsTo('inv_id', 'Inv', 'inv_id');

更新(添加模型)

InvItem 模型

class InvItem extends InvBaseModel
{

    /**
     *
     * @var integer
     */
    public $inv_item_id;

    /**
     *
     * @var integer
     */
    public $inv_id;

    /**
     *
     * @var string
     */
    public $item;

    /**
     *
     * @var string
     */
    public $desc;

    /**
     *
     * @var integer
     */
    public $quantity;

    /**
     *
     * @var double
     */
    public $rate;

    /**
     *
     * @var double
     */
    public $disc;

    /**
     * @var double
     */
    public $total;

    public function initialize()
    {
        $this->belongsTo('inv_id', 'Inv', 'inv_id');
    }
}

投资模型

class Inv extends InvBaseModel
{
    /**
     *
     * @var integer
     */
    public $inv_id;

    /**
     *
     * @var integer
     */
    public $app_id;

    /**
     *
     * @var integer
     */
    public $acct_contact_id;

    /**
     *
     * @var integer
     */
    public $status;

    /**
     *
     * @var string
     */
    public $create_date;

    /**
     *
     * @var string
     */
    public $due_date;

    /**
     *
     * @var string
     */
    public $inv_date;

    /**
     *
     * @var string
     */
    public $sent_date;

    /**
     *
     * @var string
     */
    public $paid_date;


    public function initialize()
    {
        $this->hasMany('inv_id', 'InvItem', 'inv_id');
    }
}

【问题讨论】:

  • 所以inv_id是Inv模型中的主键? inv_item_id 是 InvItem 模型的外键吗?要创建多对多关系,您需要第三个表(将 InvItem 和 Inv 链接在一起)。
  • 它是一个 hasMany 关系:1-n 关系。两个表:带有 inv_id 的 Inv 和带有 inv_id、inc_item_id 的 InvItem。 Ivitem 是 Inv 的一个行项目。 (想想电子表格)
  • InvItem 的主键和 InvItem 的外键是什么
  • inv_item_id 是 inv_item 的主键。外键是 inv_id,两个模型中都存在。
  • 添加了模型。见上文

标签: php phalcon


【解决方案1】:

我通过使用关系模型中的命名空间解决了这个问题。

public function initialize()
{
    $this->hasMany('inv_id', 'Multiple\Invoice\InvItem', 'inv_id');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2017-05-14
    相关资源
    最近更新 更多