【问题标题】:Soft delete still being shown in view laravel软删除仍在视图 laravel 中显示
【发布时间】:2018-04-10 22:20:02
【问题描述】:

由于某种原因,当我尝试对我的数据进行软删除时,它们并没有在我的视图中消失(home.blade.php),但在我的数据库中,deleted_at 列已被记录,显示我删除的日期它。你能帮我检查一下我的代码有什么问题吗,谢谢

这是我的代码:

home.blade.php

 <table class="table table-bordered">
      <tr>
        <th><strong><big>Name: </big></strong></th>
        <th><strong><big>Action </big></strong></th>
      </tr>
      <td>
      <tr>
        @foreach($data as $value)
      <tr>     
      <th><a href="{{route('user.show',['id'=>$value->id])}}">{{$value->Name}}</a></th>
      <th><form action="{{  url('/home/'.$value->id.'/delete')  }}" method="get">
        {{ csrf_field() }}
        <button type="submit">Delete</button>
      </form></th>               
      </tr>
        @endforeach
      </tr>
      </tr>
    </table>

家庭控制器:

    public function getData(){
        $data['data'] = DB::table('personal_infos')->get()->sortByDesc('created_at');

        if(count($data)>0){
        return view('home',$data);
    }else{
    return view('home');
}

public function delete($id){   
    personal_info::findOrFail($id)->delete();
    return back();
}

路线:

Route::get('/home/{id}/delete', 'HomeController@delete');
Route::get('user/show/{id}','HomeController@getInfo')->name("user.show");

个人信息模型:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Eloquent;

class personal_info extends Eloquent
{
    use SoftDeletes;
    protected $fillable = array('Name');
    protected $table = 'personal_infos';
    protected $primaryKey = 'id';
    protected $dates = ['deleted_at'];
        public function user_info1s() {
        return $this->hasMany('App\user_info1','user_id');
    }

【问题讨论】:

  • 你的主视图控制器方法是什么样的?
  • @kerrin 您好,感谢您的回复,我已经在我的问题中为视图添加了控制器

标签: laravel soft-delete


【解决方案1】:

Eloquent 查询将在查询使用软删除的模型时,自动从所有查询结果中排除软删除模型。

但是,您使用的不是 Eloquent 查询,而是原始数据库查询。因此,您还需要检查查询中的 deleted_at 列在哪里不为空。

【讨论】:

  • 您好,谢谢回复,我尝试按照您的建议进行操作,但我不知道如何真正实现它,过去当我做一些不为空的事情时,我会做类似的事情!= NULL 或者只是放NOT NULL 但对于 laravel 我还是不太确定,我做了类似的事情,你能告诉我正确的方法吗? " $data['data'] = DB::table('personal_infos')->where('deleted_at','NOT NULL')->get()->sortByDesc('created_at');"
  • 嗨,对不起,我发现了我的错误,我想把 NULL 而不是 NOT NULL,哈哈哈。非常感谢你帮助我
  • 太好了,很高兴你得到它!
猜你喜欢
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多