- Версия Laravel: 6.1.0
- Версия PHP: PHP 7.2.19-0ubuntu0.18.04.2 (cli)
- Драйвер и версия базы данных: PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1)
Описание: После вставки данных в промежуточную таблицуданные не возвращаются в запросе. Возникает следующая ошибка:
{
"message": "Maximum execution time of 30 seconds exceeded",
"exception": "Symfony\\Component\\Debug\\Exception\\FatalErrorException",
"file": "/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php",
"line": 604,
"trace": []
}
Чтобы эта ошибка произошла, достаточно, чтобы в базу данных была вставлена только 1 запись.
Шаги для воспроизведения: СозданиеБазовая модель отношения многих ко многим. Создайте метод с помощью find и с помощью
Пример:
<?php
namespace App;
class Sepultura extends Model
{
protected $table = 'sepulturas';
protected $fillable = ['lote', 'lote_anterior', 'quadra', 'quadra_anterior'];
protected $appends = ['proprietario_list'];
public function proprietarios()
{
return $this->belongsToMany('App\Proprietario', 'proprietarios_sepulturas', 'sepultura_id', 'proprietario_id')->withTimestamps();
}
public function getProprietarioListAttribute()
{
return array_map('strval', $this->proprietarios->pluck('id')->toArray());
}
}
<?php
namespace App;
class Sepultura extends Model
{
protected $table = 'proprietarios';
protected $fillable = ['nome', 'rg', 'cpf', 'telefone', 'email'];
protected $appends = ['sepultura_list'];
public function sepulturas()
{
return $this->belongsToMany('App\Sepultura', 'proprietarios_sepulturas', 'proprietario_id', 'sepultura_id')->withTimestamps();
}
public function getSepulturaListAttribute()
{
return array_map('strval', $this->sepulturas->pluck('id')->toArray());
}
}
- Контроллер ProprietariosController.php
<?php
namespace App\Http\Controllers;
use App\Proprietario;
class ProprietariosController extends Controller
{
private $proprietario;
public function __construct(Proprietario $proprietario)
{
$this->proprietario = $proprietario;
}
public function show($id)
{
$proprietario = $this->proprietario->with('sepulturas')->find($id);
if(count($proprietario->toArray()) > 0)
return response()->json($proprietario);
return response()->json(['error' => 'Resource not found!'], 404);
}
}
Метод show просто выдает ошибку Максимальное время выполнения превысило , когда что-то вставлено в таблицу proprietarios_sepulturas .
У меня есть идеальный код, работающий на Laravel 5.8.
Как решить эту проблему? !
Спасибо