У меня проблема с мягким удалением. У меня есть функция в моем приложении, где пользователь может пометить следующее объявление о недвижимости. Они также могут снять объявление о недвижимости.
Это отлично работает. когда они снимают звезду, запись мягко удаляется. Отметка времени delete_at обновлена.
Однако, если пользователь попытается снова пометить его, я получу сообщение о том, что свойство уже было добавлено / помечено. Таким образом, мягкое удаление игнорируется? Есть идеи?
StarredPropertyModel
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class StarredProperty extends Model
{
use SoftDeletes;
protected $fillable = ['property_id', 'user_id'];
public function scopeStarredProperty($query, $propertyId, $userId)
{
return $query->where('property_id', $propertyId)->where('user_id', $userId)->first();
}
}
StarredPropertyController
class StarredPropertyController extends Controller
{
public function star(Property $property, User $user, Request $request)
{
if(!$user->starredProperties()->starredProperty($property->id, $user->id))
{
return response()->json(StarredProperty::create(['property_id' => $property->id, 'user_id' => $user->id]));
}
return response()->json('You have already like this property');
}
public function unstar(Property $property, User $user, Request $request)
{
$starredProperty = $user->starredProperties()->starredProperty($property->id, $user->id);
if($starredProperty->exists())
{
$starredProperty->delete();
}
}
}