laravel 5.6 fill () пытается обновить таблицу, используя несуществующее поле 'id' - PullRequest
0 голосов
/ 24 апреля 2018

это моя модель

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class OrganizationProfile extends Model
{
    protected $fillable = [
    'logo', 
    'number_of_employees', 
    'siup', 'npwp', 'year_established', 'join_ppsdm', 'industry_sector',
    'address', 'city', 'province', 'country', 
    'postal_code',
    'organization_phone', 
    'organization_email'
];
}

таблица миграции для OrganizationProfile

Schema::create('organization_profiles', function (Blueprint $table) {
        $table->unsignedInteger('organization_id');
        $table->primary('organization_id');
        $table->foreign('organization_id')->references('id')->on('organizations')->onDelete('cascade');
        $table->string('logo')->nullable();
        $table->integer('number_of_employees')->nullable();
        $table->string('siup')->nullable();
        $table->string('npwp')->nullable();
        $table->integer('year_established')->nullable();
        $table->integer('join_ppsdm')->nullable();
        $table->string('industry_sector')->nullable();
        $table->text('address')->nullable();
        $table->string('city')->nullable();
        $table->string('province')->nullable();
        $table->string('country')->nullable();
        $table->string('postal_code')->nullable();
        $table->string('organization_phone')->nullable();
        $table->string('organization_email')->nullable();
        $table->text('meta')->nullable();
        $table->timestamps();
    });

и это в моем контроллере:

$org = OrganizationProfile::where('organization_id', $id)->first();

    if ($org == null) {
        $org = new OrganizationProfile();
        $org->organization_id = $id;
    } 
    $org->fill($request->input())->save();

это ошибка: enter image description here

eloquent пытается обновить измененные значения, используя 'id' в качестве ссылки. у меня нет поля 'id', у меня есть 'organization_id' в качестве первичного и внешнего ключа. эта ошибка не отображается, если я не изменяю значения, перечисленные в $ fillable.

заранее спасибо

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Вы можете попробовать это;

$org->fill($request->except('id'))->save();

0 голосов
/ 24 апреля 2018

изменить модель на:

  <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;

    class OrganizationProfile extends Model
    {
        protected $primaryKey = 'organization_id';

        protected $fillable = [
        'logo', 
        'number_of_employees', 
        'siup', 'npwp', 'year_established', 'join_ppsdm', 'industry_sector',
        'address', 'city', 'province', 'country', 
        'postal_code',
        'organization_phone', 
        'organization_email'
    ];
    }

, если вы хотите отключить увеличение. просто добавьте код ниже в вашей модели

public $incrementing = false;
0 голосов
/ 24 апреля 2018

Eloquent предполагает, что у каждой таблицы есть столбец первичного ключа с именем id.Вы можете переопределить его с помощью $primaryKey следующим образом:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class OrganizationProfile extends Model
{
    protected $primaryKey = 'organization_id';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...