SoftDeletes проблемы с памятью с php 7.4 и Illuminate 7.9.2 - PullRequest
0 голосов
/ 05 мая 2020

У нас есть проект с красноречивым (без Laravel).

Недавно мы обновились до php 7.4, а затем Iluminate / database до 7.9.2

В сидере, когда мы вставляем данные в модель без SofDelete, это работает.

Но когда модель имеет softdelete, она зависает.

Пример роли:

use Illuminate\Database\Eloquent\Model as Eloquent;

class Role extends Eloquent {

    protected $table = 'usuarios_roles';
    public $timestamps = true;
...
$admin = Role::create(array(
        'nombre'         => 'Admin',
        'vista'          => '1',
        'path'           => '/admin/clientes/',
        'editables'      => 0
    ));

Работает нормально.

Пример пользователя:

require_once('EloquentRegAcc.php');
use Illuminate\Database\Eloquent\SoftDeletes;

class Usuario extends EloquentRegAcc
{

    use SoftDeletes;
    public $timestamps = true;
    protected $dates = ['deleted_at'];
    protected $table = 'usuarios';
...
$usuario_admin = Usuario::create(array(
        'id_role'       => $admin2->id,
        'nombre'        => 'Admin',
        'email'         => $email,
        'password'      => $password2,
        'permissions'   => '{}'
    ));

Это дает нам ошибку:

PHP Fatal error:  Allowed memory size of 4294967296 bytes exhausted (tried to allocate 20480 bytes) in /home/vagrant/code/project/vendor/illuminate/database/Eloquent/SoftDeletes.php on line 36

Мы пытаемся обновить Vagrant RAM с 2 ГБ до 4 ГБ и установить ini_set ('memory_limit', '4096M'), но никак.

В базе данных есть роли, но не пользователи.

Тот же код с php 7.1 и Iluminate / database 5 .x работает нормально.

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

1 Ответ

0 голосов
/ 05 мая 2020

У нас в приложении есть «самодельный» лог.

Если поменять

require_once('EloquentRegAcc.php');
use Illuminate\Database\Eloquent\SoftDeletes;
class Usuario extends EloquentRegAcc
{

на

use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Database\Eloquent\SoftDeletes;
class Usuario extends Eloquent
{

Работает как спект. Нам нужно переписать или лог.

...