【发布时间】: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,两个模型中都存在。
-
添加了模型。见上文