लैरवेल 4 के नवीनतम संस्करण में आप ऑर्डर को परिभाषित करते हैं कि सभी बीडर स्क्रिप्ट डेटाबेसस्विडर क्लास की "रन" विधि में चलती हैं।
public function run()
{
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
$this->call('PrimaryTableOneSeeder');
$this->command->info('The first primary table has been seeded!');
$this->call('PrimaryTableTwoSeeder');
$this->command->info('The second primary table has been seeded!');
$this->call('PivotTableSeeder');
$this->command->info('The pivot table has been seeded!');
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
आप देखेंगे कि मैं अपने सभी बीजिंग चलाने से पहले और बाद में विदेशी कुंजी बाधाओं को अक्षम करता हूं। यह खराब अभ्यास हो सकता है लेकिन यह एकमात्र तरीका है कि मैं प्रत्येक तालिका के लिए आईडी गिनती को फिर से सेट करने के लिए ट्रंकेट फ़ंक्शन का उपयोग कर सकता हूं। यदि आप inserting related models पर मार्गदर्शिका का पालन करते हैं तो यह अभ्यास अनावश्यक हो सकता है।
class PrimaryTableOneSeeder extends Seeder {
public function run()
{
DB::table('primaryone')->truncate();
Primaryone::create(array(
'field' => 'value',
'created_at' => new DateTime,
'updated_at' => new DateTime
));
}
mass assignment उपयोग करने के लिए के रूप में मैं अपने उदाहरण में कर रहा हूँ और के रूप में प्रलेखन के नवीनतम संस्करण है, आप मॉडल के लिए या तो कुछ पहरा या fillable कॉलम का उल्लेख करना होगा। ऐसा करने के लिए बस अपने मॉडल में इस तरह की संपत्ति जोड़ें:
class Primaryone extends Eloquent {
protected $guarded = array('id');
मैं कहूंगा कि यह लगभग सही जवाब है। अगर मैं आप थे तो मैं विदेशी कुंजी चेक अक्षम नहीं करता। पर चर्चा की जा सकती है गीलेर भी टेबल को छोटा करने के लिए अच्छा है। मैं यह नहीं करूँगा, लेकिन यह सिर्फ मुझे है। इसका कारण यह है कि डीबी: बीज किसी भी समय चलाया जा सकता है जिसका मतलब है कि डीबी में इसका महत्वपूर्ण डेटा हो सकता है। – AndHeiberg
@AndHeiberg यह एक अच्छा मुद्दा है। हर कोई इस बात से अवगत नहीं है कि बीज उत्पादन में उपयोग के लिए नहीं हैं बल्कि परीक्षण डेटा के साथ एक विकास डेटाबेस को बीजिंग के लिए है, जो ठीक होने पर ठीक है। उत्पादन के लिए डेटा या तो अपने इंटरफ़ेस या एसएसएच डीबी कनेक्शन के माध्यम से जोड़ा जाना चाहिए। – isimmons
क्या कोई स्क्लाइट-संगत विधि है? 'SET FOREIGN_KEY_CHECKS' स्क्लाइट के साथ एक त्रुटि ट्रिगर करता है।यही वह जगह है जहां मेरा मुद्दा निकलता है: मैं देव के लिए एक quickie sqlite डीबी के साथ काम कर रहा हूं और अब पोस्टग्रेस पर स्थानांतरित करने की कोशिश कर रहा हूं, केवल यह पता लगाने के लिए कि स्क्लाइट की उदारता ने कई समस्याओं को छुपाया है। –