【发布时间】:2014-09-22 20:46:36
【问题描述】:
我需要帮助在 Laravel 中添加数据透视记录和相关子记录。如果可能的话,我想用 ORM 来做。这里的概念是潜在的捐助者参加筹款活动并进行捐赠,这将由一个或多个指定组成。我的表是这样的(简化):
donor:
id
name
fund_raiser:
id
date
donation:
id
donor_id
fund_raiser_id
monetary_type
designation:
id
donation_id
category
amount
我可以按如下方式手动插入数据透视记录:
// assume both donor and rundraiser records already exist
$donor = Donor::find($donorID);
$fundraiser = FundRaiser::find($fundraiserID);
// create the pivot record
$donation = Donation::create(['donor_id' => $donor->id, 'fundraiser_id' => $fundraiser->id, 'date' => 'somedate']);
// now add a designation
$designation = new Designation(['Category' => 'General', 'Amount' => '100']);
$donation->designations()->save($designation);
或者我可以以一种更 ORM 的方式创建数据透视记录:
$fundraiser->donors()->save($donor)
但现在我不知道如何插入指定,因为我不知道刚刚添加的数据透视记录的 id。
【问题讨论】:
-
@deczo。嗯。所以看起来我可能必须定义一个自定义枢轴?我得去研究一下。 Laravel 文档非常少。
-
仅当您需要预先加载关系时。
-
@deczo。不,我现在不需要急切的加载。也许稍后当我开始提取数据时。现在我正试图弄清楚如何获取数据。如何获取使用 save 方法创建的数据透视表记录的 id,然后我可以在其下添加子记录?我可以使用标准的 Query Builder 调用很容易地插入数据透视记录,但我想知道它们是否可以使用 ORM 来完成。
-
您将得到所有答案。评论太多了