我很困难,因为我是Laravel的新手。
我有一个用户表和消息表,这是我的消息表模式
Schema::create('messages', function (Blueprint $table) {
$table->increments('id');
$table->integer('sender')->unsigned();
$table->foreign('sender')->references('id')->on('users')->onDelete('cascade');
$table->integer('reciever')->unsigned();
$table->foreign('reciever')->references('id')->on('users')->onDelete('cascade');
$table->string('msg');
$table->string('attachment')->nullable();
$table->string('seen')->default(0);
$table->integer('deleted')->default(0);
$table->timestamps();
});
此处sender
和reciever
是用户表的两个foriegn键。
在我的应用程序中,我可以访问Auth :: user()中的sender
id,并且还可以访问reciever
id ..我如何才能发布关系并存储消息?
我一直在尝试很多方面请帮忙。谢谢。
我认为我的问题在于这种关系。请看看并建议我正确的方式
用户模型
public function sender()
{
return $this->hasMany('App\Message', 'sender');
}
public function reciever()
{
return $this->hasMany('App\Message', 'reciever');
}
消息模型
public function sender()
{
return $this->belongsTo('App\User', 'sender');
}
public function reciever()
{
return $this->belongsTo('App\User', 'reciever');
}
答案 0 :(得分:2)
你可以这样做:
// Create message model instance
$message = new App\Message(['msg' => 'Something test', ...]);
// Retrieve the related user
$user = App\User::find(1);
// Call the method you defined in user model
$user->sender()->save($message);
答案 1 :(得分:1)
为什么不存储bot发送方和接收方ID,当需要检索数据时,可以使用内部连接语句。 这是我在自己的应用程序中如何做到这一点的一个例子
$message->user_id = $userid;
$message->message = $msg;
$message->recipient = "user";
$message->save();
检索时
$msgs = Message::join('users', 'messages.user_id', '=', 'users.id')
->select('messages.*', 'users.name', 'users.image')
->where('messages.user_id',$id)
->get();
在我的情况下,我只存储一个ID,另一个是字符串,因为消息总是在管理员和用户之间我不需要管理员ID