Функция where()
ожидает, что последний параметр будет параметром, когда вы передаете имя столбца.
Для сравнения двух столбцов вы должны использовать метод whereColumn
.
Имея это в виду, вы также можете написать свой код, как показано ниже:
$all_update = DB::table('posts as p')
->join('cprefs as c','p.qatype', '=', 'c.qatype')
->whereColumn('c.wwide', '=', 'p.wwide') //second join condition
->where('c.user_id', $u_id)
->where('p.arank', 1)
->get();
Однако это будет толькоработать правильно, если соединение является INNER JOIN
, что верно в вашем случае.
Правильный метод добавления нескольких предложений объединения:
$all_update = DB::table('posts as p')
->join('cprefs as c', function($q) {
$q->on('p.qatype', '=', 'c.qatype')
->on('c.wwide', '=', 'p.wwide'); //second join condition
})
->where('c.user_id', $u_id)
->where('p.arank', 1)
->get();
Просто используйте это.