我一直在尝试将右连接查询转换为左连接查询,以便在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`
我做错了什么?还有另一种选择吗?提前告诉你
答案 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