【问题标题】:Foreign Key query using Query Builder in Laravel?在 Laravel 中使用查询生成器进行外键查询?
【发布时间】:2019-04-25 16:10:17
【问题描述】:

我想知道是否可以使用查询生成器而不是使用 Eloquent 关系来引用表的外键。

我正在查看Laravel Documentation,我们可以在其中创建外键

Schema::table('posts', function (Blueprint $table) {
    $table->unsignedInteger('user_id');

    $table->foreign('user_id')->references('id')->on('users');
});

但我在查询生成器中看不到是否可以只使用外键或引用来获取用户的所有帖子

我必须使用 Eloquent 关系吗?

提前感谢您的帮助。

【问题讨论】:

    标签: php sql database laravel


    【解决方案1】:

    使用join查询关系:

    $users = DB::table('users')
            ->join('posts', 'users.id', '=', 'posts.user_id')
            ->select('users.*', 'posts.*')
            ->get();
    

    【讨论】:

    • 谢谢,这很好用,但这会给出一个用户信息数组 + 帖子的额外字段数组中的每个对象都将包含完全重复的用户信息。有没有办法查询它,所以它会返回一个包含帖子对象数组的字段的用户信息,例如{'name': 'hello', 'posts' : [{'title': 'title', 'comments': 'comments'}, {'title': 'title2', 'comments': 'comments2'}]}
    • 我发布的是连接子句的一个非常基本的用法,为了进一步细化/构造结果集,您需要使用额外的约束和/或子句,例如groupBy、@ 987654323@、pivots 等。这在很大程度上取决于您的数据库设计和目标。
    猜你喜欢
    • 2018-06-23
    • 2013-05-30
    • 2016-11-16
    • 2018-02-16
    • 1970-01-01
    • 2018-07-03
    • 2015-12-13
    • 2012-12-07
    • 1970-01-01
    相关资源
    最近更新 更多