Вставка новой строки в Laravel с использованием метода «сохранить»

avatar
Paulo A. Costa
9 августа 2021 в 04:06
140
1
0

Я изучаю Laravel и пытаюсь вставить новую строку в свою таблицу estabelecimentos.

Почему это работает для вставки новой строки:

$estabelecimento = Estabelecimento::create([
    'nome' => $nome
]);

И это не работает? Используя var_dump в методе save, он возвращает null.

$estabelecimento = new Estabelecimento();
$estabelecimento->nome = $nome;
$estabelecimento->save;

Я уже пытался использовать try/catch, но он не выдает ошибок, он просто не вставляет строку и возвращает null при сохранении.

Мой класс:

namespace App;
    
use Illuminate\Database\Eloquent\Model;
    
class Estabelecimento extends Model
{
    public $timestamps = false;
    protected $fillable = ['nome'];
    
    public function Comentarios()
    {
        return $this->hasMany(Comentario::Class);
    }
 }
namespace App;

use Illuminate\Database\Eloquent\Model;

class Comentario extends Model
{
    public $timestamps = false;
    protected $fillable = ['nome', 'votes'];
    
    public function Estabelecimento()
    {
        return $this->BelongsTo(Estabelecimento::Class);
    }
}

Таблица estabelecimentos

имя тип дополнительно
идентификатор большой(20) ПК - АВТОУВЕЛИЧЕНИЕ
имя varchar(100) -
Источник
BABAK ASHRAFI
9 августа 2021 в 04:08
2

Вам нужно вызвать метод save(), а не свойство save

Ответы (1)

avatar
oreopot
9 августа 2021 в 04:09
3

save — это метод, поэтому вы вызываете его с помощью ().

итак, замените следующую строку кода:

$estabelecimento->save;

со следующим:

$estabelecimento->save(); // focus on `()`

Не забывайте всегда смотреть документацию: https://laravel.com/docs/8.x/eloquent-relationships#the-save-method