Я уже задаю динамическое имя таблицы для модели, но оно прерывается при постановке в очередь из-за сериализации модели.
Мне нужно, чтобы это значение сохранялось.
Мне нужно иметь возможность задавать задания в очереди, чтобы, учитывая имя таблицы, получать все строки в ней, обрабатывать их одну за другой до тех пор, пока не останется больше строк.Однако эта таблица может изменить свое имя, но не структуру, поэтому я использую модель для чтения / обновления каждой строки.
Однако я обнаружил, что ПОСЛЕ отправки задания в очередь, свойство таблицымодели возвращается к исходному, установленному в классе модели.
DataSource.php
class DataSource extends Model
{
protected $table = '';
}
MyJob.php
public function processTable(string $table)
{
$datasource = new DataSource();
$datasource->setTable($table);
logger('COUNT: '.$datasource->count());
$datasource::chunk(3, function(...){
...
});
}
Ввод пользователя: my_table
Тест до ::dispatch
:
dump($datasource->getTable())
Шилдс my_table
dump('COUNT: '.$datasource->count());
экранирует правильные строкиcount
При выполнении задания очереди:
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] модели в любой точкевремя после отправки в базу данных.
Я не совсем уверен в своей гипотезе.Мне нужно, чтобы кто-то подтвердил или исправил меня, если это действительно так.
Необходимость: сохранить правильное имя таблицы, которое будет обрабатываться заданием при извлечении из очереди.