我在表格中创建了一个名为finished_at
的自定义日期列。我想复制soft deleting的功能,以便:
NULL
列的finished_at
值的行。NULL
值的行,我会在查询中添加withFinished()
(就像软删除withTrashed()
的方式一样)。我该怎么做?
答案 0 :(得分:1)
在模型类中,使用SoftDeletes
特征并定义常量以告诉laravel自定义软删除列名称。
class MyModel extends Model
{
use SoftDeletes;
const DELETED_AT = 'finished_at';
.....
}
如果您想使用withFinished
代替withTrashed
,您可以创建自己的CustomSoftDeletes
特征,并在其中使用Laravel的SoftDeletes
特征。然后创建withFinished
来依次调用withTrashed
。但我不明白为什么你需要重命名该方法,因为它只是一个实现细节。
答案 1 :(得分:0)
您需要更改Model
之类的内容:
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
use SoftDeletes; //<--- use the softdelete traits
protected $dates = ['finished_at']; //<--- new field to be added in your table
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'test';
}