Praise.php 1.24 KB
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Praise extends Model
{
    use HasFactory;

    protected $guarded = [''];

    public function zanOrCancel($immerse_id, $user_id)
    {
        $immerse = Immerse::query()->where('id',$immerse_id)->first();
        if (!$immerse) return false;

        if ($immerse->state != 1) false;

        try{
            if ($praise =
                $this->query()
                ->where(['user_id' => $user_id, 'immerse_id' => $immerse_id])
                ->first()) {
                if ($praise->state == 1){
                    $praise->state = 0;
                    $immerse->decrement('praise');
                }else{
                    $praise->state = 1;
                    $immerse->increment('praise');
                }
                $praise->save();
            }else{
                $this->query()->create([
                    'user_id' => $user_id,
                    'immerse_id' => $immerse_id,
                    'state' => 1,
                ]);

                $immerse->increment('praise');
            }
            return $this;
        }catch (\Exception $exception){
            return false;
        }
    }
}