Eloquent ORM - where(),如何将两个参数都包含在表字段中

时间:2015-11-17 10:25:46

标签: laravel eloquent

$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吗?或者有任何方法可以解决这个问题吗?

1 个答案:

答案 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> 更清晰,更具可读性,并且做同样的事情。