2015-08-07 16 views
7

https://github.com/Xethron/migrations-generatorLaravel 5.1: मौजूदा डेटाबेस

मैं ऊपर विस्तार की मदद से php artisan migrate:generate आदेश का उपयोग Laravel में मेरी डेटाबेस संरचना चले गए माइग्रेट करें। लेकिन एक छोटी सी समस्या है, मेरी प्राथमिक कुंजी को आईडी के रूप में नामित नहीं किया गया है, बल्कि मैंने उपयोगकर्ता_आईडी, product_id, photo_id इत्यादि जैसे प्रत्येक के लिए एक उपसर्ग जोड़कर एक अलग सम्मेलन का उपयोग किया है। ये सभी ऑटो वृद्धिशील हैं।

यहां मेरे माइग्रेशन फ़ोल्डर के अंदर मेरी वर्तमान create_users_table.php फ़ाइल है। मैंने डिफ़ॉल्ट आईडी विकल्प को ओवरराइड करने के लिए user_id को परिभाषित किया है, क्या यह सही उपयोग है?

<?php 

use Illuminate\Database\Migrations\Migration; 
use Illuminate\Database\Schema\Blueprint; 

class CreateUsersTable extends Migration 
{ 

/** 
* Run the migrations. 
* 
* @return void 
*/ 
    public function up() 
{ 
    Schema::create('users', function (Blueprint $table) { 
      $table->primary('user_id'); 
      $table->integer('user_id', true); 
      $table->string('name', 500); 
      $table->string('email', 500); 
      $table->string('password', 500); 
     } 
    ); 
} 


/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::drop('users'); 
} 
} 

मैंने पढ़ा है कि मैं नीचे की तरह कुछ जोड़ने की जरूरत है, लेकिन मुझे यकीन है कि के बाद से मेरी कक्षा प्रवासन के बजाय सुवक्ता फैली जहां protected $primaryKey परिभाषित करने के लिए नहीं कर रहा हूँ।

class CreateUsersTable extends Eloquent { 

    protected $primaryKey = 'user_id'; 

} 

मैं निम्न त्रुटि हो रही है जब मैं करने के लिए/प्रमाणन/प्रवेश पृष्ठ है, जो मैं आईडी के बजाय user_id उपयोग के कारण का कारण बनता है लगता है जाओ। मेरे द्वारा यह कैसे किया जा सकता है?

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.id' in 'where clause' (SQL: select * from `users` where `users`.`id` = 5 limit 1) 

उत्तर

3

आप अपने User मॉडल में अपनी गैर-डिफ़ॉल्ट प्राथमिक कुंजी निर्दिष्ट करना होगा:

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model { 

    protected $primaryKey = 'user_id'; 

आप सभी मॉडल है कि उनके प्राथमिक कुंजी के रूप id का उपयोग नहीं करते के लिए यह करने के लिए की आवश्यकता होगी।

+1

आआंद ने काम किया। आपका बहुत बहुत धन्यवाद। – salep

+1

कोई समस्या नहीं है। यदि आप 'आईडी' प्राथमिक कुंजी का उपयोग करने जैसे लैरवेल सम्मेलनों का पालन करते हैं, तो आपको जीवन आसान होगा, लेकिन जब आप अपने जैसे एप्लिकेशन पोर्ट कर रहे हों तो कभी-कभी उन्हें तोड़ने का अर्थ होता है। ज्यादातर जगहों पर, लैरवेल के पास इसे समायोजित करने के तरीके हैं। –

+0

मैं आपसे सहमत हूं। अगर मैंने पहले अपनी डेटाबेस संरचना नहीं बनाई थी तो मैं लैरवेल के सम्मेलनों का उपयोग करता। – salep

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