$upvotes * @property-read int|null $upvotes_count * * @method static \Database\Factories\PlanCommentFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|PlanComment newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|PlanComment newQuery() * @method static \Illuminate\Database\Eloquent\Builder|PlanComment query() * @method static \Illuminate\Database\Eloquent\Builder|PlanComment whereBody($value) * @method static \Illuminate\Database\Eloquent\Builder|PlanComment whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|PlanComment whereGrade($value) * @method static \Illuminate\Database\Eloquent\Builder|PlanComment whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|PlanComment wherePlanId($value) * @method static \Illuminate\Database\Eloquent\Builder|PlanComment whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|PlanComment whereUserId($value) * * @mixin \Eloquent */ class PlanComment extends Model { use HasFactory; public function author(): BelongsTo { return $this->belongsTo(User::class, 'user_id'); } public function plan(): BelongsTo { return $this->belongsTo(Plan::class, 'plan_id'); } public function upvotes(): HasMany { return $this->hasMany(CommentUpvote::class, 'comment_id'); } public function isUpVoted(): bool|int { if (auth()->user()) { return auth() ->user() ->comment_upvotes() ->forPlanCommentsUpVote($this) ->count(); } return false; } public function isDownVoted(): bool|int { if (auth()->user()) { return auth() ->user() ->comment_upvotes() ->forPlanCommentsDownVote($this) ->count(); } return false; } public function removeUpVote(): bool { if (auth()->user()) { return auth() ->user() ->comment_upvotes() ->forPlanCommentsUpVote($this) ->delete(); } return false; } public function removeDownVote(): bool { if (auth()->user()) { return auth() ->user() ->comment_upvotes() ->forPlanCommentsDownVote($this) ->delete(); } return false; } }