我正在处理通知我有2个表:一个是notify
,另一个是notify_status
。通过通知我正在显示title
和description
以及notify_status
中的数据,我的字段read_status
默认为0
。在我展示之后,我想将其更改为1
。我还有notify_id
作为外键。这是我的show
方法:
public function show($id)
{
$notify = Notify::find($id);
$notify_status = NotifyStatus::where('notify_id', $id)->get();
$user_data['read_status'] = 1;
$user = NotifyStatus::create($user_data);
return view('notify.desr')->with(compact('notify'));
}
但它并不是针对notify_id
创造的。我该怎么办?
答案 0 :(得分:0)
您的模型应定义以下关系:
class Notify extends Model
{
public function setAsRead()
{
$this->status->read_status = 1
$this->status->save();
}
public function wasRead()
{
return (bool) $this->status->read_status;
}
public function status()
{
return $this->hasOne(NotifyStatus::class);
}
}
class NotifyStatus extends Model
{
public function notify()
{
return $this->belongsTo(Notify::class);
}
}
请查看Laravel Eloquent Relationships以便进一步阅读。
在您的控制器中,您可以使用它:
$notify = Notify::find($id);
$notify->status->read_status = 1;
$notify->status->save();
return view('notify.desr')->with(compact('notify'));
或者你可以简单地创建一个新方法来设置新状态(看看Notify类的第一个方法):
$notify = Notify::find($id);
$notify->setAsRead();
return view('notify.desr')->with(compact('notify'));
答案 1 :(得分:0)
public function show($id)
{
$notify = Notify::find($id);
$notify_status = NotifyStatus::where('notify_id', $id)->first();
$notify_status->read_status = 1;
$notify_status->save()
return view('notify.desr')->with(compact('notify'));
}