Laravel中的“关键”关系

bz4sfanl  于 2023-05-30  发布在  其他
关注(0)|答案(2)|浏览(141)

我有两个模型:InvoiceInvoiceItems,这些型号与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时,它工作得很好!那么,造成这种差异的原因是什么呢?

ntjbwcob

ntjbwcob1#

使用$invoice->invoiceItems代替。
你可以在关系属性中找到它。
为了数组执行laravel逻辑,他们选择将所有内容都包含为kebab_case以保持数据一致,但我理解你的困惑。

rdlzhqv9

rdlzhqv92#

在Laravel的Eloquent ORM中,“键”是指用于在两个数据库表之间建立关系的列或属性。

以下是Eloquent模型中的关系定义示例:

class Post extends Model
 {
        public function user()
        {
            return $this->belongsTo(User::class, 'user_id', 'id');
        }
 }

相关问题