$data = Booking::join('user', 'booking.user_id', '=', 'user.id')
->join('tickets', 'trail_booking.tkt_id', '=', 'tickets.id')
->where('trail_booking.user_id','=','tickets.user_id')
->paginate();
我无法使用上述查询获得任何结果,因为'where'条件将'tbl_tickets.user_id'
评估为值而不是表字段。
我应该使用whereRaw吗?或者有任何方法可以解决这个问题吗?
答案 0 :(得分:1)
由于第三个参数应该是一个值,因此会对其进行转义和引用,因此您应该使用whereRaw
代替:
$data = Booking::join('user', 'booking.user_id', '=', 'user.id')
->join('tickets', 'trail_booking.tkt_id', '=', 'tickets.id')
->whereRaw('trail_booking.user_id = tickets.user_id')
->paginate();
您也可以使用DB::raw
传递值,以便它不会被转义:
->where('trail_booking.user_id', DB::raw('tickets.user_id'))
但在我看来,whereRaw
使用<div class="form-group">
<label class="control-label" for="typeOfSchool">Type of Educational Establishment</label>
<div class="select">
<select class="form-control" name="typeOfSchool" id="typeOfSchool">
<option value=""></option>
<option value="a">School Name 1</option>
<option value="h">School Name 2</option>
<option value="b">School Name 3</option>
<option value="c">School Name 4</option>
<option value="d">School Name 5</option>
<option value="e">School Name 6</option>
<option value="f">School Name 7</option>
<option value="g">School Name 8</option>
<optgroup label=""></optgroup>
</select>
</div>
</div>
更清晰,更具可读性,并且做同样的事情。