SQLSTATE [23502] Не нулевое нарушение после таблицы заполнения в Laravel и Postgresql - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь заполнить таблицу, как в этом примере , но я получаю нулевое значение для клавиш FK. Я ищу решение, но я не нашел ничего, что работает до сих пор. (Я новичок в Laravel и Postgresql)

Модель контракта

class Contract extends Model
{
    protected $fillable = ['first_data','second_data'];

    public function contractfoo(){
        return $this->belongsTo('App\ContractFoo','contract_data_foo');

    }

    public function contractbar(){
        return $this->belongsTo('App\ContractBar','contract_data_bar');
    }
}

Модель ContractFoo


class Contractfoo extends Model
{
    protected $fillable = ['contract_data_foo','contract_data_second_foo'];

    protected $primaryKey = 'contract_data_foo';

    public $incrementing = false;

   public function contract()
   {
       return $this->hasMany('App\Contract');
   }
}

Модель ContractBar


class ContractBar extends Model
{
    protected $fillable = ['contract_data_bar','contract_data_second_bar'];

    protected $primaryKey = 'contract_data_bar';

    public $incrementing = false;

   public function contract()
   {
       return $this->hasMany('App\Contract');
   }
}

Миграция контракта


Schema::create('contract', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->string('contract_data_bar',50)->nullable(false);
     $table->string('contract_data_foo',45)->nullable(false);
     $table->integer('first_data');
     $table->integer('second_data');
     $table->timestamps();
});

Schema::table('contract', function($table) {       
      $table->foreign('contract_data_foo')->references('contract_data_foo')->on('contract_foo');            
      $table->foreign('contract_data_bar')->references('contract_data_bar')->on('contract_bar'); 
});

Миграция ContractFoo

 Schema::create('contract_foo', function (Blueprint $table) {
       $table->string('contract_data_foo',50)->primary();
       $table->integer('contract_data_second_foo');
       $table->timestamps();
 });

ContractBar Migration


Schema::create('contract_bar', function (Blueprint $table) {
      $table->string('contract_data_bar',45)->primary();
      $table->integer('contract_data_second_boo');
      $table->timestamps();
});


Контрактная фабрика


$factory->define(Contract::class, function (Faker $faker) {
    return [
        'first_data' =>$faker->randomDigit,
        'second_Data' => $faker->randomDigit,
    ];
});

$factory->define(ContractFoo::class, function (Faker $faker) {
    return [
        'contract_data_foo' => $faker->randomDigit,
        'contract_data_second_foo' => $faker->randomDigit,
    ];
});

$factory->define(ContractBar::class, function (Faker $faker) {
    return [
        'contract_data_bar' => $faker->randomDigit,
        'contract_data_second_bar' => $faker->randomDigit,
    ];
});

Сеялка контрактов

factory(App\Contract::class, 10)->create()->each(function ($contract) {

  $contractfoo = factory(App\ContractFoo::class)->make();
  $contract->contractfoo()->save($contractfoo);

  $contractbar = factory(App\ContractBar::class)->make();
  $contract->contractbar()->save($contractbar);

});

Я ценю любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...