如何在laravel中分离多个实例雄辩的透视台?

时间:2014-01-15 22:01:21

标签: php laravel eloquent

数据透视表:'bonus_circle'可以使多个项目具有相同的circle_id和bonus_id。换句话说,同一个圈子可以有多个相同的奖励。使用$ circle-> bonus() - > detach($ id)删除所有实例。我需要它只分离一个实例。有谁知道这方面的工作?

3 个答案:

答案 0 :(得分:5)

我搜索了一周以上的答案。我不能使用你的代码作为例子,因为我还没有足够的代码继续下去,但是我会用我的代码向你展示我在Laravel IRC聊天中从Kindari收到的答案(谢谢)。

我有用户,角色和帐户。用户可以在一个或多个帐户上拥有一个角色。我的role_user_account表有role_id,user_id,account_id。我需要删除用户的角色,其中account_id = x但我发现detach()正在删除用户的所有帐户角色。

什么行不通:

$user->AccountRoles()->detach($role->id, array('account_id' => $account->id));

工作原理:

$user->AccountRoles()->newPivotStatementForId($role->id)->whereAccountId($account->id)->delete();

答案 1 :(得分:2)

Raw Query目前有效,但如果有人能回答这个问题,我会很感激。

DB::delete('DELETE FROM bonus_circle WHERE bonus_id = ? AND circle_id = ? LIMIT 1',[$bonus->id, $circle->id]);

答案 2 :(得分:0)

我遇到了同样的问题。用它来解决它。

DB::table($user->model()->getTable())
->where('role_id', 5)
->where('user_id', '=', $model->getKey())
->where('system_id', '=', 15)
->delete();