मैं इस बाधा को Laravel माइग्रेशन में कैसे लिखूं?

ALTER TABLE user_profiles 
   ADD CONSTRAINT app_profiles 
       FOREIGN KEY (profile_id, app_id) 
       REFERENCES profile_apps (profile_id, app_id);

मैंने यह कोशिश की है:

$table->foreign(['profile_id', 'app_id'])->references('profile_apps')->on(['profile_id', 'app_id']);

जो में बदल जाता है:

C:\Users\CAM\Projects\mcr-back\vendor\laravel\framework\src\Illuminate\Database\Grammar.php:39 में "त्रुटि अपवाद: स्ट्रिंग रूपांतरण के लिए सरणी"

और तार के समान,

$table->foreign('profile_id, app_id')->references('profile_apps')->on('profile_id, app_id');

त्रुटि के साथ:

"SQLSTATE [42000]: सिंटैक्स त्रुटि या पहुँच उल्लंघन: 1072 कुंजी स्तंभ 'profile_id, app_id' तालिका में मौजूद नहीं है"

1
Carlos Mora 10 सितंबर 2019, 11:34
BTW, ALTER स्टेटमेंट कंसोल में ठीक चलता है।
 – 
Carlos Mora
10 सितंबर 2019, 11:35

2 जवाब

सबसे बढ़िया उत्तर

आप on और references विधियों का मिश्रण कर रहे हैं।

सही संस्करण है:

$table
    ->foreign(['profile_id', 'app_id'])
    ->references(['profile_id', 'app_id'])
    ->on('profile_apps');
1
maximkou 10 सितंबर 2019, 13:38
सही! शुक्रिया!
 – 
Carlos Mora
10 सितंबर 2019, 15:30

इस विधि का प्रयोग करें

नोट: सुनिश्चित करें कि आपके database > migration में profile table और app table इससे ऊपर हैं table migration

2014_06_14_23123123_create_profiles_table

2014_06_14_23123123_create_apps_table

इससे पहले

2014_06_14_23123123_create_this_table

$table->foreign('profile_id')->references('id')->on('profiles')->onDelete('cascade');
$table->foreign('app_id')->references('id')->on('apps')->onDelete('cascade');
0
Community 20 जून 2020, 12:12
मैंने पहले से ही उन बाधाओं को निर्धारित कर दिया है, जो मैं पूछ रहा हूं उससे अलग हैं। आवश्यक संदर्भ profile_apps के लिए है, एक अलग तालिका जिसका अर्थ है कि कुछ प्रोफ़ाइल कुछ (लेकिन सभी नहीं) ऐप्स से संबंधित हैं। उपयोगकर्ता द्वारा निर्दिष्ट प्रोफ़ाइल उस तालिका में मौजूद होनी चाहिए।
 – 
Carlos Mora
10 सितंबर 2019, 11:50
क्या आप अनेक से अनेक संबंध की बात कर रहे हैं? या एक बहुरूपी संबंध। मेरा सुझाव है कि आप इसे आजमाएं youtube.com/watch?v=C7T1689IvPQ&t=553s ए>
 – 
Doggo
10 सितंबर 2019, 11:53
कृपया प्रश्न को फिर से पढ़ें। मैं रिश्तों से संबंधित कुछ भी नहीं मांग रहा हूं, लेकिन प्रवासन में विदेशी प्रमुख बाधाएं हैं। यह सरल है: sth जो मैं SQL कमांड लाइन में कर सकता हूं जो मैं Laravel माइग्रेशन में करना चाहता हूं।
 – 
Carlos Mora
10 सितंबर 2019, 11:57