После создания нескольких приложений с помощью Laravel и использования свойств softDelete я понял, что такие методы, как destroy (), restore () и kill (), одинаковы для нескольких контроллеров. Поэтому я пытаюсь поместить их в черту и использовать ее с разных контроллеров.
Мой код выглядит следующим образом:
ProfilesController.php
<?php
namespace App\Http\Controllers;
use App\Profile;
class ProfilesController extends Controller
{
public function destroy(Profile $profile)
{
Profile::del($profile, 'profiles');
return redirect()->route('profiles.index');
}
public function trashed()
{
Profile::trash('Profile');
}
}
Profile.php (модель)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Profile extends Model
{
protected $fillable = ['user_id', 'role_id', 'title', 'subtitle', 'slug', 'birthday', 'about'];
use SoftDeletes, Helpers, commonMethods;
public function getRouteKeyName()
{
return 'slug';
}
// ... more code here
}
файл характеристик: commonMethods.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use App\Profile;
use Session;
trait commonMethods
{
public static function del($element, $page_name)
{
$element->delete();
Session::flash('success', $element . ' successfully deleted!');
}
public static function trash($model)
{
$total = $model::onlyTrashed()->get();
$total_tr = count($total);
$all_tr = $model::all();
return view('partials.templates.trashed', compact('total', 'total_tr', 'all_tr'));
}
// ...more code here
}
Проблема:
- Я пытаюсь перейти к представлению "Trashed", в котором перечислены все элементы "softdeleted", но не "kill", метод.
- Я передаю модель $переменная с методом trash ($ model)
- Я получаю следующую ошибку: Класс App / Profile не найден. Попробуйте вызвать App / Profile
Я отладил, и переменная $ model содержит именно то, что мне нужно, строку «Profile», которая мне нужна для построения запроса:
$total = Profile::onlyTrashed()->get();
Этот запрос работает, когда он находится в ProfilesController, но не работает, когда он находится в признаке, поскольку класс модели не найден.
Есть идеи, как заставить его работать?
Я использую Laravel 6.