duana1021 2019-04-18 17:53
浏览 269
已采纳

Laravel - 软删除未生效

I'm having an issue with soft delete. I have a feature in my app where a user can star a followed property advert. They can also unstar a property advert.

This works fine. when they unstar it, the record is soft delete. The delete_at timestamp is updated.

However, if the user tries to star it again, I get a message saying that the property has already been liked/starred. So the soft delete is being ignored? Any ideas?

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();
        }
    }
}
  • 写回答

1条回答 默认 最新

  • doutao5419 2019-04-18 17:58
    关注

    You are missing a ->get() at the end of the if that checks if starredProperty exists on the star function. $user->starredProperties()->starredProperty($property->id, $user->id) returns a query, not a record. To get the record you still need to execute get, if there are no records then the value returned from get will be null.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图