Laravel eloquent 关系中的 "key"
The "key" in Laravel eloquent relationship
我有 2 个模型: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');
}
}
当我想使用 eloquent 获取发票及其发票项目时,我使用以下代码:
$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
它 returns null
而它存在于顶部 dd($invoice->toArray())
!
另一方面,当我使用 $invoice->invoiceItems
时效果很好!
现在造成这种差异的原因是什么?
改用$invoice->invoiceItems
。
我想你可以在关系属性中找到它。
为了数组执行 laravel 逻辑,他们选择将所有内容包含为 kebab_case 以保持数据一致性,但我理解您的困惑。
我有 2 个模型: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');
}
}
当我想使用 eloquent 获取发票及其发票项目时,我使用以下代码:
$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
它 returns null
而它存在于顶部 dd($invoice->toArray())
!
另一方面,当我使用 $invoice->invoiceItems
时效果很好!
现在造成这种差异的原因是什么?
改用$invoice->invoiceItems
。
我想你可以在关系属性中找到它。
为了数组执行 laravel 逻辑,他们选择将所有内容包含为 kebab_case 以保持数据一致性,但我理解您的困惑。