php – 来自另一个表的Laravel 5 where子句
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 来自另一个表的Laravel 5 where子句,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2199字,纯文字阅读大概需要4分钟。
内容图文
![php – 来自另一个表的Laravel 5 where子句](/upload/InfoBanner/zyjiaocheng/759/90c602fa7a354f73907680ddc83a49f5.jpg)
我有一个简单的代码,我想要做的是从另一个表访问一个字段并将其放在我的where子句中.这是我的代码:
ReportController.php
$reservations = Reservation::with('charge', 'room', 'client')
-> whereBetween('reservation_from', [$from, $to])
-> where('room.type', \Request::input('type')) //what should this be
-> orderBy('created_at')
-> get();
Room.php
class Room extends Model
{
use SoftDeletes;
protected $table = 'rooms';
protected $fillable = ['id', 'roomNumber', 'type', 'price', 'description'];
public function reservations() {
return $this->hasMany('App\Reservation', 'id', 'room_number');
}
}
Reservation.php
class Reservation extends Model
{
use SoftDeletes;
protected $table = 'reservations';
protected $fillable = ['roomNumber', 'clientId', 'reservation_from', 'reservation_to'];
public function room() {
return $this->belongsTo('App\Room');
}
}
架构:
正如您在ReportController.php中看到的那样,有一条评论说“应该是什么”,这是我想要修复的部分.我想要做的是在我的雄辩查询中访问房间表中的类型字段.
我想要做的查询是这样的:
select * from `reservations` where `reservation_from` between '2015-10-29' and '2015-10-29' and `rooms.type` = "test"
有没有办法做到这一点?谢谢.
解决方法:
您正在寻找的是whereHas方法.
$reservations = Reservation::with('charge', 'room', 'client')
->whereBetween('reservation_from', [$from, $to])
->whereHas('room', function($query) {
$query->where('type', '=', \Request::input('type'));
})
->orderBy('created_at')
->get();
链接到文档:http://laravel.com/docs/5.1/eloquent-relationships#querying-relations
编辑:
编辑此内容以澄清评论中的一些内容.
要创建方便,可重用的查询约束以使代码更清晰,可以使用查询约束:http://laravel.com/docs/5.1/eloquent#query-scopes
此外,因为查询可以链接,您可以执行以下操作:
// Create query with common constraints
$query = Reservation::with('charge', 'room', 'client')
->whereBetween('reservation_from', [$from, $to]);
// Ternary operator to decide whether or not to add whereHas constraint
$query = (\Request::input('type') == "all") ? $query : $query->whereHas('room', function($query) {
$query->where('type', '=', \Request::input('type'));
});
// Finally, fetch the results sorted by 'latest', which is a convenient way of doing "orderBy('created')"
$reservations = $query->latest()->get();
内容总结
以上是互联网集市为您收集整理的php – 来自另一个表的Laravel 5 where子句全部内容,希望文章能够帮你解决php – 来自另一个表的Laravel 5 where子句所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。