我正在使用Laravel 5.2
。
我有model
如下:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes;
class ZoomMeeting extends BaseModel {
public $timestamps=true;
protected $table = 'zoom_meetings';
use SoftDeletes;
protected $dates = ['deleted_at'];
protected $fillable = ['user_id', 'uuid', 'meeting_id', 'host_id', 'topic', 'status', 'type', 'start_url', 'join_url', 'created_at'];
public function users() {
return $this->belongsTo('App\Models\User');
}
}
基本模型如下:
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Auth;
use Carbon\Carbon;
class BaseModel extends Model {
public $timestamps = false;
protected static function boot()
{
//parent::boot();
static::creating(function($model) {
if(empty($model->created_at))
{
$model->created_at = date('Y-m-d H:i:s');
}
return true;
});
static::updating(function($model) {
$model->updated_at = date('Y-m-d H:i:s');
return true;
});
}
}
我在softdeletetrait
模型中使用ZoomMeeting
,并且软删除工作正常。
但是,如果我使用eloquent从同一模型中获取记录,它也会返回软删除的记录。我使用下面的代码来获取记录:
$record = ZoomMeeting::where("user_id", $user_id)->where("meeting_id", $meeting_id)->orderBy("id", "DESC")->first();
eloquent
正在构建query
:
select * from `zoom_meetings` where `user_id` = 3 and `meeting_id` = 707070707 order by `id` desc limit 1
请参阅deleted at is null
声明中未设置where
。它不会阻止删除的记录。
我不确定我在哪里弄错了?
答案 0 :(得分:4)
看起来你覆盖了boot
方法,但你实际上并没有实际调用父boot
方法(它被注释掉了),所以这个特性永远不会正确初始化。我相信这也意味着您正在删除的数据实际上正在从数据库中删除。
是否有理由需要覆盖启动方法?您正在添加的内容已经由框架处理,因此它似乎没有必要。