Laravel 增变器或创建事件
Laravel mutator or creating event
我有两个模型,Card
和 Expense
。两者都有一个 type
字段。每当我添加新的费用时,我都会在表格中有一个下拉菜单 select a Card
。它们通过 belongsTo 关系相关。
问题是,我想自动将我的费用的 type
字段设置为与我的卡类型相同。我不想在我的费用表中有另一个 type
的下拉列表。此外,我想在我的费用控制器上的 store
方法中继续使用以下内容:
auth()->user()->expenses()->create($request->all());
我认为这应该可以通过在模型中使用一个修改器来实现,但我不完全确定如何处理这个问题。
所以简而言之,我需要的是,当创建一个新的Expense
时,我需要从相关的Card
中抓取type
字段,然后插入到Expense type
字段。
我不想在我的控制器中做的是:
$expense = new Expense;
$expense->name = ... And so on
如果您想使用卡片模型中的 type
,您可以这样做:
$card = Card::find(1);
$card->expenses()->create(array_merge($request->all(), ['type' => $card->type]));
但是如果您已经在 Card 模型中有一个并且 Expense 属于 Card,那么复制 type
并不是一个好主意。
我有两个模型,Card
和 Expense
。两者都有一个 type
字段。每当我添加新的费用时,我都会在表格中有一个下拉菜单 select a Card
。它们通过 belongsTo 关系相关。
问题是,我想自动将我的费用的 type
字段设置为与我的卡类型相同。我不想在我的费用表中有另一个 type
的下拉列表。此外,我想在我的费用控制器上的 store
方法中继续使用以下内容:
auth()->user()->expenses()->create($request->all());
我认为这应该可以通过在模型中使用一个修改器来实现,但我不完全确定如何处理这个问题。
所以简而言之,我需要的是,当创建一个新的Expense
时,我需要从相关的Card
中抓取type
字段,然后插入到Expense type
字段。
我不想在我的控制器中做的是:
$expense = new Expense;
$expense->name = ... And so on
如果您想使用卡片模型中的 type
,您可以这样做:
$card = Card::find(1);
$card->expenses()->create(array_merge($request->all(), ['type' => $card->type]));
但是如果您已经在 Card 模型中有一个并且 Expense 属于 Card,那么复制 type
并不是一个好主意。