2016-06-09 5 views
7

मैंने इन दो डेटाबेस तालिकाओं:Laravel डाटाबेस स्कीमा, Nullable विदेश

  1. उपयोगकर्ता टेबल्स
  2. साथी टेबल्स

उपयोगकर्ता टेबल्स जानकारियां इस तरह संभाल लेंगे

Schema::create('users', function (Blueprint $table) { 
     $table->increments('id')->unique(); 
     $table->string('email')->unique(); 
     $table->string('username')->unique(); 
     $table->string('password', 60); 
     $table->string('photo')->nullable(); 
     $table->integer('partner_id')->unsigned(); 
     $table->foreign('partner_id')->references('id')->on('partners'); 
     $table->rememberToken(); 
     $table->timestamps(); 
}); 

जबकि पार्टनर टैबलेट तों इच्छा इस तरह प्रथम नाम और अंतिम नाम, आदि के रूप में सभी उपयोगकर्ता मेटा जानकारी शामिल है

Schema::create('partners', function (Blueprint $table) { 

    /** 
    * Identity Columns 
    */ 
    $table->increments('id')->unique(); 
    $table->string('first_name'); 
    $table->string('middle_name')->nullable(); 
    $table->string('last_name')->nullable(); 
    $table->string('display_name')->nullable(); 
    $table->string('email')->unique()->nullable(); 
    $table->string('website')->nullable(); 
    $table->string('phone')->nullable(); 
    $table->string('mobile')->nullable(); 
    $table->string('fax')->nullable(); 
    $table->date('birthdate')->nullable(); 
    $table->longText('bio')->nullable(); 
    $table->string('lang')->nullable(); //Language 

    /** 
    * Address Columns 
    */ 
    $table->text('street')->nullable(); 
    $table->text('street2')->nullable(); 
    $table->integer('country_id')->unsigned(); // foreign 
    $table->foreign('country_id')->references('id')->on('countries'); 
    $table->integer('state_id')->unsigned(); // foreign 
    $table->foreign('state_id')->references('id')->on('country_states'); 
    $table->string('city')->nullable(); 
    $table->string('district')->nullable(); 
    $table->string('area')->nullable(); 
    $table->string('zip')->nullable(); 
}); 

कोई उपयोगकर्ता साइट रजिस्टर है जब मैं केवल चाहते हैं कुछ क्षेत्र हैं जो, username, email address, password, first name और last name। ये केवल आवश्यक फ़ील्ड हैं।

तो साइट पर पंजीकरण करने के बाद उपयोगकर्ता पार्टनर टेबल में जानकारी भर दी जा सकती है।

लेकिन विदेशी कुंजी की संरचना की वजह से, मैं किसी भी आगे इस त्रुटि के कारण आगे नहीं बढ़ सकता:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`mytable`.`tbl_partners`, CONSTRAINT `partners_country_id_foreign` FOREIGN KEY (`country_id`) REFERENCES `tbl_countries` (`id`)) (SQL: insert into `tbl_partners` (`first_name`, `last_name`, `display_name`, `email`, `updated_at`, `created_at`) values (Jack, Wilson, admin, [email protected], 2016-06-09 19:41:18, 2016-06-09 19:41:18)) 

मैं जानता हूँ कि यह देशों तालिका जो साथी तालिका के लिए आवश्यक है द्वारा कारण है।
मेरा प्रश्न है: तो मैं देश या साथी की मेज पर किसी भी अन्य गैर आवश्यक डेटा को भरने, लेकिन देशों के लिए विदेशी तालिका स्कीमा रख सकते वहाँ एक काम के आसपास है, कहा गया है, आदि

उत्तर

23

country_id और state_id नल सेट , इस तरह। > नल() - -> अहस्ताक्षरित() -

$table->integer('country_id')->nullable()->unsigned(); 

$table->integer('state_id')->nullable()->unsigned(); 
+2

आप स्कीमा बनाने के बाद क्षेत्र नल को बदलने की जरूरत है, तो लाइन $ टेबल> पूर्णांक ('country_id') होना चाहिए> परिवर्तन (); – sh6210

संबंधित मुद्दे