Laravel Ошибка придобавлении строки в laravel-permission

mstdmstd

Новичок
всем привет!

В Laravel 5.6/PostgreSQL 10.5 приложении используя "spatie/laravel-permission": "^2.16" плагин
я програмно добавляю строку кодом :

Код:
                $newModelHasPermission                = new ModelHasPermission();
                $newModelHasPermission->permission_id = 1;
                $newModelHasPermission->model_type    = "App\User";
                $newModelHasPermission->model_id      = 12;
                $newModelHasPermission->save();
И получаю ошибку :

Код:
 "message": "SQLSTATE[42601]: Syntax error: 7 ERROR:  zero-length delimited identifier at or near \"\"\"\"\nLINE 1: ..., \"model_type\", \"model_id\") values ($1, $2, $3) returning \"\"\n                                                                     ^ (SQL: insert into \"rt_model_has_permissions\" (\"permission_id\", \"model_type\", \"model_id\") values (1, App\\User, 12) returning \"\")",
    "exception": "Illuminate\\Database\\QueryException",
Определение модели :
Код:
 <?php
namespace App;

use DB;
use App\MyAppModel;
use App\User;
use App\library\ListingReturnData;
use App\Http\Traits\funcsTrait;

class ModelHasPermission extends MyAppModel
{

    protected $table = 'model_has_permissions';
    public $timestamps = false;

    use funcsTrait;

    protected static function boot() {
        parent::boot();
    }

    public function permission()
    {
        return $this->belongsTo('App\Permission');
    }

...
Почему ошибка и как ее исправить?

Спасибо!
 

AmdY

Пью пиво
Команда форума
а у тебя точно не переписано и существует поле в бд primaryKey="id"?
 

mstdmstd

Новичок
Да похоже дело в этом - таблица не имеет primaryKey :
Код:
CREATE TABLE public.rt_model_has_permissions (
    permission_id int4 NOT NULL,
    model_type varchar(255) NOT NULL,
    model_id int8 NOT NULL,
    CONSTRAINT rt_model_has_permissions_pkey PRIMARY KEY (permission_id, model_id, model_type),
    CONSTRAINT model_has_permissions_permission_id_foreign FOREIGN KEY (permission_id) REFERENCES rt_permissions(id) ON DELETE CASCADE
)
и я закоментарил
Код:
    protected $table = 'model_has_permissions';
//    protected $primaryKey = 'permission_id';
    public $timestamps = false;
1) Наверно, можно добавить поле primaryKey в эту таблицу

2) Я если не добавлять это primaryKey поле, то какое может быть решение ?
 

AmdY

Пью пиво
Команда форума
в модели укажи protected $primaryKey = null или rt_model_has_permissions_pkey (но в последнем я не в курсе, как работае CONSTRAINT PRIMARY KEY в pg и будет ли оно в выборке.
 

mstdmstd

Новичок
В модели установил null :
Код:
protected $table = 'model_has_permissions';
protected $primaryKey = null;
public $timestamps = false;
Но все равно ошибка пытается вернуть id и как это убрать ь :
Код:
    "message": "SQLSTATE[42703]: Undefined column: 7 ERROR:  column \"id\" does not exist\nLINE 1: ...\"model_type\", \"model_id\") values ($1, $2, $3) returning \"id\"\n                                                                   ^ (SQL: insert into \"rt_model_has_permissions\" (\"permission_id\", \"model_type\", \"model_id\") values (7, App\\User, 65) returning \"id\")",
    "exception": "Illuminate\\Database\\QueryException",
?
 

mstdmstd

Новичок
Зря я мучался, надо было воспользоваться методом givePermissionTo из доки и всего делов...
 
Сверху