Laravel将右连接转换为左连接

时间:2014-01-31 20:29:25

标签: php mysql sql join laravel

我一直在尝试将右连接查询转换为左连接查询,以便在laravel查询构建器中使用它。这是我的Sql语句,它的结果完美无缺

select `weekday`.`name`, `open_time`, `close_time` 
from `schedule` 
join `restaurants_has_schedule` on `schedule`.`id` = `restaurants_has_schedule`.`schedule_id` 
and `restaurants_has_schedule`.`restaurants_id` = 1
right join `weekday` on `weekday`.`id` = `schedule`.`weekday_id` 
ORDER BY  `weekday`.`id`

|------
|name|open_time|close_time
|------
|Domingo|NULL|NULL
|Lunes|NULL|NULL
|Martes|NULL|NULL
|Miercoles|NULL|NULL
|Jueves|14:11:51|14:11:51
|Vienes|09:11:21|17:00:00
|Sábado|NULL|NULL

但是当它转换为左连接它停止工作时,为每个restaurants_id显示相同的数据。这是我的左连接声明。

select `weekday`.`name`, `open_time`, `close_time` 
from `weekday` 
left join `schedule` on `weekday`.`id` = `schedule`.`weekday_id` 
join `restaurants_has_schedule` on `schedule`.`id` = `restaurants_has_schedule`.`schedule_id` 
and `restaurants_has_schedule`.`restaurants_id` = 1
ORDER BY  `weekday`.`id`

我做错了什么?还有另一种选择吗?提前告诉你

1 个答案:

答案 0 :(得分:0)

尝试使用Laravels Eloquent ORM,它可以处理很酷的关系!不再需要连接或编写SQL查询 请参阅此处:Laravels Eloquent ORM& Schema Builder

或者也许关于orm的一般情况,你应该试一试:

对象角色建模 Object Role Modeling

Laravel doc中的示例: 一篇文章可能会有很多评论 一对多:

class Post extends Eloquent {

    public function comments()
    {
        return $this->hasMany('Comment');
    }

}

“评论”是模型。

定义的“反向”:

class Comment extends Eloquent {

    public function post()
    {
        return $this->belongsTo('Post');
    }

}

'Post'是模特。

然后作为查询:

$comments = Post::find(1)->comments; //by Primary Key

或者

$comments = Post::where('somefield', '=', 'somevalue')->comments->get();

....非常酷,很多人看到文档@ Laravels Eloquent ORM