无法通过Laravel 5.3中的show方法创建数据

时间:2017-01-10 11:02:02

标签: php laravel laravel-5.3

我正在处理通知我有2个表:一个是notify,另一个是notify_status。通过通知我正在显示titledescription以及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创造的。我该怎么办?

2 个答案:

答案 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'));
}