laravel - 不在枢纽分析表中

标签 laravel laravel-4 pivot-table eloquent

在Laravel中,我们可以建立如下关系:

class User {
    public function items()
    {
        return $this->belongsToMany('Item');
    }
}

允许我们为用户获取数据透视表中的所有项目:
Auth::user()->items();

但是,如果我想得到相反的结果该怎么办。并获取用户尚未拥有的所有物品。因此,不要放在数据透视表中。

有没有简单的方法可以做到这一点?

最佳答案

为了简单和对称起见,您可以在User模型中创建一个新方法:

// User model
public function availableItems()
{
    $ids = \DB::table('item_user')->where('user_id', '=', $this->id)->lists('user_id');
    return \Item::whereNotIn('id', $ids)->get();
}

要使用通话:
Auth::user()->availableItems();

关于laravel - 不在枢纽分析表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20089820/

相关文章:

php - Laravel Auth Logout() + Session Flush() 没有注销用户

excel - 防止 Excel 数据透视表页面项覆盖上面的单元格

excel - 如何对同一行中不同列中具有相同文本值的列部分进行求和

laravel - 在 Laravel 中下载 S3 文件链接

Laravel 4 - CSRF token 永远不会改变

laravel - 为什么 laravel 主要使用 Facades 而不是单例?

Laravel 4 - 提取路由、迭代和测试

arrays - 如何在Excel中减去值?

mysql - 创建 MySQL 表时出现 SQLSTATE[42000] 错误 1118。行大小太大

AngularJS 和 Laravel - CORS