我有一个名为messages的表,其结构如下:
id | sender_id | receiver_id | message | sent_at
我已经建立了一个系统,每当用户选择一个特定用户时,该页面上就会以适当的方式显示由他发送或接收的消息。为此,我具有执行该操作的以下代码:
<script type="text/javascript">
function showMessages(elem){
let id = $(elem).attr('id');
let myId = "<?php echo \Session::get('user_id'); ?>";
console.log(id, myId);
$.get("/get-messages",
{
id_no_1: id,
id_no_2: myId
}, function(data){
alert(data)
});
}
在这里,我获得了关联用户和我自己的用户的user_id,并对路由执行AJAX请求,并且该路由具有:
Route::get('/get-messages', 'PagesController@getMessages');
我的主要功能如下:
public function getMessages(){
$id_no_1 = request('id_no_1');
$id_no_2 = request('id_no_2');
$messagesSendByOneToTwo = DB::table('messages')
->where('sender_id', $id_no_1)
->where('receiver_id', $id_no_2)
->get();
// $messagesSendByOneToTwo = json_encode($messagesSendByOneToTwo);
$messagesSendByTwoToOne = DB::table('messages')
->where('sender_id', $id_no_2)
->where('receiver_id', $id_no_1)
->get();
// $messagesSendByOneToTwo = json_encode($messagesSendByTwoToOne);
$allMessages = array_merge($messagesSendByOneToTwo, $messagesSendByTwoToOne);
$allMessages = json_encode($allMessages);
echo $allMessages;
}
我有两个变量,我想将两个变量合并为一个变量。我尝试了array_merge();
,因为变量不是数组,所以我知道它行不通。对于这个问题,我有以下可能的解决方案:
答案 0 :(得分:0)
您没有理由先做两个查询:
public function getMessages(){
$id_no_1 = request('id_no_1');
$id_no_2 = request('id_no_2');
$messagesSent = DB::table('messages')
->whereIn('sender_id', [ $id_no_1, $id_no_2 ])
->whereIn('receiver_id', [ $id_no_1, $id_no_2 ])
->get();
return response()->json($messagesSent); //This is better than echoing json
}
答案 1 :(得分:0)
如果需要数组,可以尝试以下代码获取数组而不是集合。
messagesSendByOneToTwo = DB::table('messages')
->where('sender_id', $id_no_1)
->where('receiver_id', $id_no_2)
->get()->toArray();