Php Laravel 5.2车型用户->;发票->;发票详情

Php Laravel 5.2车型用户->;发票->;发票详情,php,relationship,laravel-5.2,Php,Relationship,Laravel 5.2,我有3个模型,我不知道我需要为每个模型编写哪种关系 用户|发票|发票明细 一个用户可以有多张发票,一张发票只能由一个用户开具。 所以在用户类中,我写: public function invoice(){ return $this->hasMany('App\Invoice'); } public function user(){ return $this->belongsTo('App\User'); } 在发票类别中,我写道: public function

我有3个模型,我不知道我需要为每个模型编写哪种关系

用户|发票|发票明细

一个用户可以有多张发票,一张发票只能由一个用户开具。 所以在用户类中,我写:

public function invoice(){
    return $this->hasMany('App\Invoice');
}
public function user(){
    return $this->belongsTo('App\User');
}
在发票类别中,我写道:

public function invoice(){
    return $this->hasMany('App\Invoice');
}
public function user(){
    return $this->belongsTo('App\User');
}
这对吗

现在,一张发票有一个InvoiceDetail,这是否意味着每张发票在表Invoice\u details中只有一行

我只是不知道在每个模型中写什么,如何连接它们? 我制作了一个小模式,只是为了展示它应该是什么样子:


所以问题是,在每个模型中编写哪些函数来声明它们之间的正确连接?

到目前为止您编写的内容很好,它可以将用户正确地(几乎)链接到发票。唯一的问题是您需要将
owner\u id
重命名为
user\u id
,或者指定它应该使用
owner\u id
字段

用户类

// Note that the function should be plural as it's for many
public function invoices(){
    return $this->hasMany('App\Invoice', 'owner_id', 'ID');
}
public function user(){
    return $this->belongsTo('App\User', 'ID', 'owener_id');
}
public function invoiceDetails()
{
    return $this->hasMany('App\InvoiceDetails');
}
public function invoice()
{
    return $this->belongsTo('App\Invoice');
}
发票类别

// Note that the function should be plural as it's for many
public function invoices(){
    return $this->hasMany('App\Invoice', 'owner_id', 'ID');
}
public function user(){
    return $this->belongsTo('App\User', 'ID', 'owener_id');
}
public function invoiceDetails()
{
    return $this->hasMany('App\InvoiceDetails');
}
public function invoice()
{
    return $this->belongsTo('App\Invoice');
}
然后您只需要定义与InvoiceDetails的关系

发票类别

// Note that the function should be plural as it's for many
public function invoices(){
    return $this->hasMany('App\Invoice', 'owner_id', 'ID');
}
public function user(){
    return $this->belongsTo('App\User', 'ID', 'owener_id');
}
public function invoiceDetails()
{
    return $this->hasMany('App\InvoiceDetails');
}
public function invoice()
{
    return $this->belongsTo('App\Invoice');
}
发票明细类

// Note that the function should be plural as it's for many
public function invoices(){
    return $this->hasMany('App\Invoice', 'owner_id', 'ID');
}
public function user(){
    return $this->belongsTo('App\User', 'ID', 'owener_id');
}
public function invoiceDetails()
{
    return $this->hasMany('App\InvoiceDetails');
}
public function invoice()
{
    return $this->belongsTo('App\Invoice');
}

因此,我需要专门设置“owner\u id”“id”?是的,因为默认情况下,幼虫将尝试使用表名,在本例中,
user\u id
,它还使用小写字母表示
id
。这是一个很好的实践,使用拉威尔所期望的。