在Laravel 5.4中为类似系统建立关系

时间:2018-02-24 14:34:12

标签: laravel-5.4 table-relationships

我正在制作一个与Laravel练习的简单项目,但我被困住了。我无法弄清楚为什么每次点击like按钮,我的表格中都会创建一个新行...所以我有多行(1)"对于任何点击我做的按钮。

多行(1)

我怀疑这与我的模特之间的关系有关,但我无法看到我做错了什么。

我的 User.php 型号:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;

class User extends \Eloquent implements Authenticatable
{
    use AuthenticableTrait;

    public function likes()
    {
        return $this->hasMany('App\Like');
    }
}

我的 Memo.php 型号

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Memo extends Model
{
    public function likes()
    {
        return $this->hasMany('App\Like');
    }
}

我的 Like.php 模型

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Like extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function memo()
    {
        return $this->belongsTo('App\Memo');
    }
}

我的 MemoController 方法,我处理我的AJAX请求:

public function likeMemo(Request $request)
{
    $memo_ID = $request['id'];
    $memo = Memo::findOrFail($memo_ID)->first();

    // Is already liked...?
    $like = Auth::user()->likes()->where('memo_id', $memo_ID)->first();

    if($like->is_like) {
        $like->is_like = false;
        $like->update();
        return response()->json(['status' => $like], 200);
    }

    // Insert data into DB.
    else {
        $like = new Like();
        $like->user_id = Auth::user()->id;
        $like->memo_id = $memo_ID;
        $like->is_like = true;
        $like->save();
        return response()->json(['status' => 'inserted like']);
    }

}

代码应该能够在Instagram等特定备忘录中切换类似内容,因为我的目标是将逻辑添加到特定的收藏夹类别中。

0 个答案:

没有答案