php - 我正在尝试从 larvavel 中的数据库中获取消息(有点卡住)
问题描述
我想在 laravel 中制作一个聊天应用程序。我正在尝试获取一对一的消息。
这是我的控制器:-
public function user( $id) {
$chat = User::find($id);
$table = DB::table('messages')
->where('sender', Auth::user()->id, '&&', 'reciever', $id)
->orWhere('sender', $id, '&&', 'reciever', Auth::user()->id)
->get();
return view('user', compact('chat', 'id', 'table'));
}
我的消息迁移:-
public function up()
{
Schema::create('messages', function (Blueprint $table) {
$table->id();
$table->integer('sender')->unsigned();
$table->integer('reciever')->unsigned();
$table->text('message');
$table->timestamps();
});
}
这是路线:- Route::get('/user/{id}', 'ContactsController@user');
这是我得到的错误:-
SQLSTATE[HY000]: General error: 1 near ""sender"": syntax error (SQL: select * from "messages" where reciever "sender" = 30 "sender" = 1)
我觉得我的逻辑有问题,谁能指导我。
解决方案
问题出在你where()
和orWhere()
->where('sender', Auth::user()->id, '&&', 'reciever', $id)
->orWhere('sender', $id, '&&', 'reciever', Auth::user()->id)
你应该怎么做:
->where([
['sender', Auth::user()->id],
['reciever', $id],
])->orWhere([
['sender', $id],
['reciever', Auth::user()->id],
])
我建议在深入研究之前阅读Laravel Where Clauses文档。
推荐阅读
- javascript - 为什么不直接使用共享导入而不是 React.createContext?
- r - ggplot guide_legend 参数将连续图例更改为离散图例
- asp.net-mvc - ASP 核心身份声明 - 已过期的声明
- android - ListView 适配器总是删除最后一行
- react-native - React Native / Expo - 自定义字体不起作用
- pointers - Rust 中指向 Trait 的原始指针
- java - 项目计划建议
- spring-boot - SpringBoot:改变列长度
- php - 使用php从服务器中删除文件和数据
- python - 将文件上传到 Flask 时出现 KeyError