数据不会像laravel一样输入

时间:2019-12-15 08:32:30

标签: laravel

我想使用ajax向视频添加不喜欢的系统,但数据不会进入数据库。

控制器

public function like(Request $request)
{
    $video_id = $request['videoId'];
    $is_like = $request['isLike'] === 'true';
    $update = false;
    $video = Video::find($video_id);
    if (!$video) {
        return null;
    }
    $user = Auth::user();
    $like = $user->likes()->where('video_id', $video_id)->first();
    if ($like) {
        $already_like = $like->like;
        $update = true;
        if ($already_like == $is_like) {
            $like->delete();

            return null;
        }
    } else {
        $like = new Like();
    }
    $like->like = $is_like;
    $like->user_id = $user->id;
    $like->video_id = $video->id;
    if ($update) {
        $like->update();
    } else {
        $like->save();
    }

    return null;
}

视图

刀片和js

<header class="mhead col video" data-videoid="{{ $video->id }}">
    <div class="mhead__inner">
        <h1 class="mhead__h">{{ $video->name }}</h1>
        <div class="mhead__utility">
            <ul id="rating_options" class="rating-list">
                <li>
                    <a href="#" class="btn btn-xs btn-warning like">
                        {{ Auth::user()->likes()->where('video_id', $video->id)->first() ? Auth::user()->likes()->where('video_id', $video->id)->first()->like == 1 ? 'You like this video' : 'Like' : 'Like'  }}</a>
                    |
                    <a href="#" class="btn btn-xs btn-danger like">
                        {{ Auth::user()->likes()->where('video_id', $video->id)->first() ? Auth::user()->likes()->where('video_id', $video->id)->first()->like == 0 ? 'You dont like this video' : 'Dislike' : 'Dislike'  }}</a>
                </li>
            </ul>
        </div>
    </div>
</header>
<script>
    var token = '{{ Session::token() }}';
    var urlLike = '{{ route('like') }}';
</script>


<script>
    var videoId = 0;
    $('.like').on('click', function (event) {
        event.preventDefault();
        videoId = event.target.parentNode.parentNode.dataset['videoid'];
        var isLike = event.target.previousElementSibling == null;
        $.ajax({
            method: 'POST',
            url: urlLike,
            data: {
                isLike: isLike,
                videoId: videoId,
                _token: token
            }
        })
            .done(function () {
                event.target.innerText = isLike ? event.target.innerText == 'Like' ? 'You like this video' : 'Like' : event.target.innerText == 'Dislike' ? 'You dont like this video ' : 'Dislike ';
                if (isLike) {
                    event.target.nextElementSibling.innerText = 'Dislike';
                } else {
                    event.target.previousElementSibling.innerText = 'Like';
                }
            });
    });
</script>

喜欢的模型

class Like扩展Model {     受保护的$ fillable = [        'like','user_id','video_id',     ];

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

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

} 模型用户

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

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

示范视频

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

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

0 个答案:

没有答案