我将laravel从5.4升级到 5.6.23 并像这样使用Eloquent模型
<?php namespace App\Model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Category extends Model
{
use SoftDeletes;
}
然后我在控制器中用垃圾回收功能调用了类别
<?php namespace App\Http\Controllers\Backend;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Requests;
use App\Model\Category;
class CategoryController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(
Request $request
) {
dd(Category::onlyTrashed());
}
}
,并且显示这样的错误。甚至正常的获取数据也将包括softdelete
行的所有记录
BadMethodCallException
Method Illuminate\Database\Query\Builder::onlyTrashed does not exist.
5.4可以正常工作,但5.6对我不起作用
这是dd(class_uses_recursive(Category::class));
array:8 [▼
"Illuminate\Database\Eloquent\Concerns\HasAttributes" => "Illuminate\Database\Eloquent\Concerns\HasAttributes"
"Illuminate\Database\Eloquent\Concerns\HasEvents" => "Illuminate\Database\Eloquent\Concerns\HasEvents"
"Illuminate\Database\Eloquent\Concerns\HasGlobalScopes" => "Illuminate\Database\Eloquent\Concerns\HasGlobalScopes"
"Illuminate\Database\Eloquent\Concerns\HasRelationships" => "Illuminate\Database\Eloquent\Concerns\HasRelationships"
"Illuminate\Database\Eloquent\Concerns\HasTimestamps" => "Illuminate\Database\Eloquent\Concerns\HasTimestamps"
"Illuminate\Database\Eloquent\Concerns\HidesAttributes" => "Illuminate\Database\Eloquent\Concerns\HidesAttributes"
"Illuminate\Database\Eloquent\Concerns\GuardsAttributes" => "Illuminate\Database\Eloquent\Concerns\GuardsAttributes"
"Illuminate\Database\Eloquent\SoftDeletes" => "Illuminate\Database\Eloquent\SoftDeletes"
]
答案 0 :(得分:0)
好的,我找到了解决方案。我尝试在父项中添加启动功能
<?php namespace App\Model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Category extends Model
{
use SoftDeletes;
public static function boot()
{
parent::boot();
}
}
然后Category::withTrashed()
和Category::all()
都没有错误,因此过滤器softDelete out