我有两个模型:Invoice
和InvoiceItems
,这些型号与invoice_id
连接:
Schema::create('invoice_items', function (Blueprint $table) {
$table->bigInteger('invoice_id')->unsigned();
$table->foreign("invoice_id")->references('id')->on('invoices')->onDelete('cascade');
});
Invoice
:
class Invoice extends Model
{
protected $fillable = [
'profile_id',
'invoice_number',
....
];
public function invoiceItems()
{
return $this->hasMany('App\InvoiceItem');
}
}
和InvoiceItems
class InvoiceItem extends Model
{
protected $guarded = [];
public function invoice()
{
return $this->belongsTo('App\Invoice');
}
}
当我想用它的发票项目使用雄辩的发票,我使用以下代码:
$invoice = Invoice::with('invoiceItems')->findOrFail($id);
现在dd($invoice->toArray())
的输出是:
array:20 [▼
"id" => 14
"profile_id" => 13
"invoice_number" => null
....
"created_at" => "2020-05-05 09:21:46"
"updated_at" => "2020-05-09 12:09:14"
"invoice_items" => array:1 [▼
0 => array:10 [▼
"id" => 9
"invoice_id" => 14
"price" => "10000.00"
"created_at" => "2020-05-05 09:21:46"
"updated_at" => "2020-05-05 09:21:46"
]
]
]
到现在为止一切看起来都很好,但我很困惑!当我想使用$invoice->invoice_items
时,它返回null
,而它存在于顶部的dd($invoice->toArray())
!另一方面,当我使用$invoice->invoiceItems
时,它工作得很好!那么,造成这种差异的原因是什么呢?
2条答案
按热度按时间ntjbwcob1#
使用
$invoice->invoiceItems
代替。你可以在关系属性中找到它。
为了数组执行laravel逻辑,他们选择将所有内容都包含为kebab_case以保持数据一致,但我理解你的困惑。
rdlzhqv92#
在Laravel的Eloquent ORM中,“键”是指用于在两个数据库表之间建立关系的列或属性。
以下是Eloquent模型中的关系定义示例: