如何检查用户是否喜欢某物业

时间:2019-04-18 11:58:06

标签: laravel laravel-5 eloquent laravel-5.8

我正在制作一个房地产广告网站。在应用程序中,用户可以喜欢或“加星标”属性。这会在带有星标的表中创建一个带有property_id和user_id的记录。

我想检查用户是否喜欢当前属性,以便他们不再喜欢它。

目前,这一切都在API端上。

这是我的控制人

这将创建喜欢/已加星标的记录。

public function store(Property $property, User $user, Request $request)
    {     
        $starred = StarredProperty::create(['property_id' => $property->id, 'user_id' => $user->id]);

        return $starred;
    }

这是加星标的财产模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;


class StarredProperty extends Model
{
    use SoftDeletes;

    protected $fillable = ['property_id', 'user_id'];
}

这是具有所有加星标属性的关系的用户模型。

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Property;
use App\StarredProperty;
use Tymon\JWTAuth\Contracts\JWTSubject;


class User extends Authenticatable implements JWTSubject
{
    use Notifiable;

    protected $fillable = [
        'first_name', 'last_name', 'username', 'email', 'phone_number', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function properties()
    {
        return $this->hasMany(Property::class);
    }

    public function starredProperties()
    {
        return $this->hasMany(StarredProperty::class);
    }


    public function getJWTIdentifier()
    {
        return $this->getKey();
    }


    public function getJWTCustomClaims()
    {
        return [];
    }
}

2 个答案:

答案 0 :(得分:4)

您只需为此在控制器中添加支票即可。您可以将代码更改为以下形式:

addFlashAttribute

答案 1 :(得分:1)

在加星标属性的控制器中,您可以使用“ firstOrcreate”方法来代替Laravel文档中提到的创建方法。

eloquent#other-creation-methods