@EvgeniiR
https://github.com/EvgeniiR

Это нормально, что запрос Model::all() возвращает и удалённые(Soft deleted) модели?

В документации сказано, что Soft Deleted модели автоматически исключаются из любых выборок.
spoiler
As noted above, soft deleted models will automatically be excluded from query results. However, you may force soft deleted models to appear in a result set using the withTrashed method on the query:

$flights = App\Flight::withTrashed()
->where('account_id', 1)
->get();
https://laravel.com/docs/5.6/eloquent#deleting-models

Однако методы Model::all() и Model::get() мне возвращает все модели, в том числе и удалённые. Это нормальное поведение? И как тогда выбирать все модели кроме удалённых?

Вот он весь мой код:
public function index()
    {
        return Category::all();
    }


Код модели:
<?php

namespace App;

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

class Category extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];

    public static function boot() {
        static::deleting(function(Category $category) {
            //$subcategories = $category->subcategories;
            //foreach ($subcategories as $subcategory) $subcategory->delete();
        });
    }
}
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Путём задавания множества вопросов удалось увидеть код, который написал автор. Из кода стало ясно, что он переопределил в модели метод boot, но забыл вызвать родительский метод boot.

Вообще, переопределять boot ради модельных событий — плохая практика. Почитайте документацию на предмет узнавания хорошей практики.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
Значит что-то сильно неправильно делаете.

Код из документации ничего не говорит о вашем коде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы