我有这样的查询
SELECT
`id`,
`advert_id`,
IF(
`chats`.`owner_id` = ?,
`chats`.`sender_id`,
`chats`.`owner_id`
) AS `sender_id`,
IF(
`chats`.`owner_id` = ?,
`chats`.`owner_access_time`,
`chats`.`sender_access_time`
) AS `access_time`,
`created_time`
FROM
`chats`
WHERE 1
AND `id` = ?
AND `owner_id` = ?
AND `project_id` = ?
UNION
SELECT
`id`,
`advert_id`,
IF(
`chats`.`owner_id` = ?,
`chats`.`sender_id`,
`chats`.`owner_id`
) AS `sender_id`,
IF(
`chats`.`owner_id` = ?,
`chats`.`owner_access_time`,
`chats`.`sender_access_time`
) AS `access_time`,
`created_time`
FROM
`chats`
WHERE 1
AND `id` = ?
AND `sender_id` = ?
AND `project_id` = ?
ORDER BY `id` ASC
我正在尝试使用像这样的雄辩查询构建器
来实现它 $chats = $database
->table('chats')
->where('sender_id', '=', $arguments['user_id'])
->union(
$database
->table('chats')
->where('owner_id', '=', $arguments['user_id'])
->get(
[
'advert_id',
'owner_id',
'sender_id',
'id'
]
)
)
->get(
[
'advert_id',
'owner_id',
'sender_id',
'id'
]
);
但是我收到错误方法getBindings不存在。,我也找不到如何写"如果"具有雄辩的条款,我发现当方法,但据我所知它只适用于"如果参数存在,请在查询中添加附加条款",什么不是什么我需要。
答案 0 :(得分:0)
解决方案
$chats = $database::table('chats')
->where('sender_id', '?')
->select(
'id',
'advert_id',
$database::raw('
IF(
`chats`.`owner_id` = ?,
`chats`.`sender_id`,
`chats`.`owner_id`
) AS `sender_id`
'),
$database::raw('
IF(
`chats`.`owner_id` = ?,
`chats`.`owner_access_time`,
`chats`.`sender_access_time`
) AS `access_time`
')
)
->setBindings(
[
$arguments['user_id'],
$arguments['user_id'],
$arguments['user_id'],
]
)
->union(
$database::table('chats')
->where('owner_id', '?')
->select(
'id',
'advert_id',
$database::raw('
IF(
`chats`.`owner_id` = ?,
`chats`.`sender_id`,
`chats`.`owner_id`
) AS `sender_id`
'),
$database::raw('
IF(
`chats`.`owner_id` = ?,
`chats`.`owner_access_time`,
`chats`.`sender_access_time`
) AS `access_time`
')
)
->setBindings(
[
$arguments['user_id'],
$arguments['user_id'],
$arguments['user_id'],
]
)
)
->get();