我有两个模型,Card
和Expense
。两者都有一个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
答案 0 :(得分:1)
如果您想使用卡片模型中的type
,您可以执行以下操作:
$card = Card::find(1);
$card->expenses()->create(array_merge($request->all(), ['type' => $card->type]));
但如果您已经在卡片模型中有一个并且费用属于卡片,那么复制type
并不是一个好主意。