Laravel/Livewire отображают данные в таблице, если сегодня между двумя датами

Я пытаюсь заполнить свою таблицу данными, если сегодня между датой публикации и датой закрытия.

public function mount(Career $career)
    {
        $this->today = Carbon::now();
        $this->posting = Carbon::parse($career->posting_date);
        $this->closing = Carbon::parse($career->closing_date);
        $this->career = Career::where($this->posting, '<=', $this->today) ->where($this->closing, '<=', $this->today)->get();
        $this->sortBy            = 'id';
        $this->sortDirection     = 'asc';
        $this->perPage           = 100;
        $this->paginationOptions = config('project.pagination.options');
        $this->orderable         = (new Career())->orderable;
        
    }

я получаю эту ошибку

SQLSTATE[42S22]: Column not found: 1054 Unknown column '2022-05-06 01:10:12' in 'where clause'

также, если я попытаюсь отобразить $today, $posting и $closing на своем лезвии, все они будут показывать сегодняшнюю дату.

Вы передаете данные как имя столбца, вам нужно указать имя столбца. Я не знаю, что это такое, но прочитайте документацию для предложения where в вашем sql и узнайте, какие позиционные параметры идут куда

Kaleba KB Keitshokile 06.05.2022 03:20

Здравствуйте, спасибо за ваш ответ. Можете ли вы дать мне подсказку о том, как это сделать? благодарю вас

KrutSednar 06.05.2022 03:51

Я не знаю larvel или как вы готовите и передаете тычинки sql, но эта ошибка sql очень наглядна. Может быть, если бы вы сказали, какая именно строка вызывает ошибку, я мог бы перейти оттуда

Kaleba KB Keitshokile 06.05.2022 03:53

Я исправил ошибку, используя эту строку $this->career = Career::where('posting_date', '<=', $this->today) ->where('closing_date', '>=', $this->today)->get();, но теперь у меня есть другая ошибка, говорящая Cannot assign Illuminate\Database\Eloquent\Collection to property App\Http\Livewire\Career\Vacant::$career of type App\Models\Career

KrutSednar 06.05.2022 04:51

покажи нам свободный компонент livewire

Richie 06.05.2022 07:49

решил это. размещен ниже

KrutSednar 06.05.2022 10:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
6
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я решил это, отредактировав свой рендер и поставив >whereDate.

public function render()
{   
    $query = Career::advancedFilter([
        's'               => $this->search ?: null,
        'order_column'    => $this->sortBy,
        'order_direction' => $this->sortDirection,])
        ->whereDate('posting_date', '<=', Carbon::now())
        ->whereDate('closing_date', '>=', Carbon::now());

    $careers = $query->paginate($this->perPage);

    return view('livewire.career.vacant', compact('careers', 'query'));  
}

Вы должны ввести имя столбца в своем запросе, и вы не можете ввести дату в поле имени столбца.

$this->career = Career::where('column_name', '<=', $this->today) ->where('column_name', '<=', $this->today)->get();

Другие вопросы по теме