左边的连接在laravel中更好

时间:2014-11-15 12:46:56

标签: php mysql join laravel laravel-4

我有一个users表和follows表以及两个模型。我有用户左连接来从表中获取数据,但我很困惑使用哪个模型和连接表(即)。

$user = Follows::select( 'users.id', 'users.username', 'users.photo' )                              
            ->leftJoin('users', 'follows.fk_users_id', '=', 'users.id')     
            ->where('follows.follower_users_id' ,'=', $id)
            ->get();

$user = Users::select( 'users.id', 'users.username', 'users.photo' )                                
            ->leftJoin('follows', 'follows.fk_users_id', '=', 'users.id')       
            ->where('follows.follower_users_id' ,'=', $id)
            ->get();

我在Follows模型中对此进行编码但是我只需要来自users表的数据,其中follows表满足条件,需要你的帮助,因为我是laravel的新手。

我的问题是,是否使用关注模型并离开加入用户表或使用用户模型和左连接关注表

2 个答案:

答案 0 :(得分:1)

在实际分析Laravel / PDO在您的条件下创建的结果SQL,即每个表中有多少行,现有索引等之前,您无法确定。这里有一个提示,引入错误进入每个选择并捕获异常消息。它将包含您可以修复并应用于分析器的原始查询,请参阅MySql query analyzer - free solutions

答案 1 :(得分:0)

SQL JOINS在SQL方面都是相同的,但是当我们在Laravel中查看ORM级别时,事情会发生变化。

如果我们使用关注模型,那么您只能调用关注模型中定义的关系。如果您使用用户模型,则可以使用针对用户模型定义的关系。

注意在SQL中使用 explain ,您会发现查询执行路径相同。