php return table except deleted_at(softdeletes)laravel

57hvy0tb  于 2023-08-02  发布在  PHP
关注(0)|答案(3)|浏览(100)

我试图返回一个没有删除行的表(软删除)
这是我的代码

public function getMailRecipients($meoId){
    return DB::table('mail_recipients')->where('meo_id', '=', $meoId)->select('name', 'email')->get();
}

字符串
但是我得到了所有的行,即使是那些通过软删除删除的行,我还应该添加什么来避免这种情况?

4zcjmb1e

4zcjmb1e1#

如果你正在使用查询构建器(facade DB),那么你应该这样做:

DB::table('mail_recipients')->where('meo_id', '=', $ meoId)->whereNull('deleted_at')->select('name', 'email')->get();

字符串
如果使用模型,则必须使用SoftDeletes trait

class Flight extends Model{
 use SoftDeletes;
}


在文档https://laravel.com/docs/8.x/eloquent#soft-deleting中查看更多信息

btqmn9zl

btqmn9zl2#

注 *:使用Eloquent时,软删除功能有效。如果您使用查询生成器查询结果,您最终会看到所有记录都被丢弃或未被丢弃。
你可以试试这个:

public function getMailRecipients($meoId)
{
    return DB::table('mail_recipients')
          ->whereNull('deleted_at')
          ->where('meo_id', $meoId)
          ->get(['name', 'email']);
}

字符串

guicsvcw

guicsvcw3#

如果你来到这里是因为你在模型中使用了protected $softDelete = true,而Laravel似乎忽略了它,那么解决方案是在模型中使用use Illuminate\Database\Eloquent\SoftDeletes。每次都有效!

相关问题