Laravel mutator或创建活动

时间:2017-07-25 08:49:10

标签: php laravel relation

我有两个模型,CardExpense。两者都有一个type字段。每当我添加新费用时,我都会在表单中有一个下拉列表来选择Card。它们与belongsTo关系相关。

问题是,我想自动将费用的type字段设置为与我的卡类型相同。我不希望以我的费用形式为type提供另一个下拉列表。另外,我想在我的费用控制器上的store方法中继续使用以下内容:

auth()->user()->expenses()->create($request->all());

我认为这可能是通过在模型中使用mutator来实现的,但我并不完全确定如何处理这个问题。

简而言之,我需要的是,在创建新的Expense时,我需要从相关type抓取Card字段,然后插入{Expense type 1}} field。

我不想在我的控制器中做什么,如:

$expense = new Expense;
$expense->name = ... And so on

1 个答案:

答案 0 :(得分:1)

如果您想使用卡片模型中的type,您可以执行以下操作:

$card = Card::find(1);
$card->expenses()->create(array_merge($request->all(), ['type' => $card->type]));

但如果您已经在卡片模型中有一个并且费用属于卡片,那么复制type并不是一个好主意。