我正在制作一个房地产广告网站。在应用程序中,用户可以喜欢或“加星标”属性。这会在带有星标的表中创建一个带有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 [];
}
}
答案 0 :(得分:4)
您只需为此在控制器中添加支票即可。您可以将代码更改为以下形式:
addFlashAttribute
答案 1 :(得分:1)
在加星标属性的控制器中,您可以使用“ firstOrcreate”方法来代替Laravel文档中提到的创建方法。