分离 Laravel 5.3
Posted
技术标签:
【中文标题】分离 Laravel 5.3【英文标题】:Detach Laravel 5.3 【发布时间】:2016-10-17 12:03:38 【问题描述】:经过几个小时的调试并尝试解决问题,我没有找到解决方案。所以,我希望你能帮助我。
我有这段小代码:
$removed = false;
if ($store->persons->contains($person))
$store->persons()->detach($person);
$removed = true;
var_dump($removed);
我的问题是我不明白为什么 $remove 总是“假”。 如果我注释 $store->persons()->detach($person); 行,一切都会按预期进行,并且 $removed 将是“true”。我不明白为什么会这样,但我希望你能帮助我。
编辑
public function removePerson(Request $request, $storeId, $personId)
$store = Store::findOrFail($storeId);
$person = Cashier::findOrFail($personId);
$removed = false;
if ($store->persons->contains($person))
$store->persons()->detach($person);
$removed = true;
return response()->json([
'removed' => $removed,
]);
谢谢。
【问题讨论】:
我觉得我们在这里遗漏了一些信息。你能发布更多代码吗?你在哪里叫收银员? 收银员出错。我添加了该方法的完整代码。谢谢。 【参考方案1】:detacth/attach 方法不将完整模型作为参数,而是它们都需要相关模型的 id,因此在您的情况下,您需要在 detach 方法中传递 id。
public function removePerson(Request $request, $storeId, $personId)
$store = Store::findOrFail($storeId);
$person = Cashier::findOrFail($personId);
$removed = false;
if ($store->persons->contains($person))
$store->persons()->detach($person->id); // or $personId which ever
$removed = true;
return response()->json([
'removed' => $removed,
]);
【讨论】:
使用 object 或 id 可以正常工作(分离),但是我不知道为什么 $remove 不成立。 And... 在 Laravel 5.3 中,分离函数在第一步中检查参数是否是模型或集合的实例。因此,您可以指定模型、集合或 id 数组作为参数。以上是关于分离 Laravel 5.3的主要内容,如果未能解决你的问题,请参考以下文章