от
Я уже задаю динамическое имя таблицы для модели, но оно прерывается при постановке в очередь из-за сериализации модели. Мне нужно, чтобы это значение сохранялось. Мне нужно иметь возможность устанавливать задание в очереди, чтобы, учитывая имя таблицы, получать все строки в ней, обрабатывать их одну за другой до тех пор, пока не останется больше строк. Однако эта таблица может изменить свое имя, но не структуру, поэтому я использую модель для чтения / обновления каждой строки. Тем не менее, я обнаружил, что ПОСЛЕ отправки задания в очередь свойство таблицы модели возвращается к исходному, установленному в классе модели. DataSource.php
class DataSource extends Model
{
    protected $table = '';
}
MyJob.php
public function processTable(string $table)
{
    $datasource = new DataSource();
    $datasource

Пользовательский ввод: my_table

Тест перед ::dispatch
:
dump($datasource шилдс my_table
dump('COUNT: '.$datasource экранирует правильное количество строк

При запуске задания очереди:

local.ERROR: SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table name '' (SQL: select * from `` order by ``.`id` asc limit 3 offset 0)... 
Как видите, свойство
$table
модели пропускается при сериализации [de] модели в любой момент времени после отправки в базу данных. Я не совсем уверен в своей гипотезе. Мне нужен кто-то, чтобы подтвердить или исправить меня, если это действительно то, что происходит. Необходимо: сохранить правильное имя таблицы для обработки заданием при извлечении из очереди.              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Сохраняете ли вы свойство
table
в задании перед отправкой? Это необходимо для любых данных, которые вы хотите передать при использовании очереди. Следующий пример работал для меня. /App/Jobs/DataSourceJob.php
...