मैं एक फ़ाइलें मॉडल है में एक ही आईडी क्षेत्र को संदर्भित, और एकाधिक (वर्तमान में 3) विभिन्न अन्य मॉडल (अनुच्छेद, नौकरी, इवेंट) सभी फाइलों को हो सकता है, कि फ़ाइलें मॉडल में संग्रहीत हैं।सिद्धांत - एकाधिक मॉडल एक और मॉडल
समस्या यह है कि जब मैं (./doctrine निर्माण सभी पुनः लोड) CLI-टूल के माध्यम से टेबल उत्पन्न करते हैं, मैं इस त्रुटि संदेश मिलता है:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot
add or update a child row: a foreign key constraint fails
(`my_database/articles`, CONSTRAINT `articles_id_files_target_id`
FOREIGN KEY (`id`) REFERENCES `files` (`target_id`))
फ़ाइल (के रूप में परिभाषित किया गया है कोई संबंध नहीं है
columns:
id:
primary: true
autoincrement: true
type: integer(4)
target_id: integer(4)
filename: string(255)
[...]
सभी 4 मॉडल इस संबंध परिभाषा है:: इस मॉडल में परिभाषित) में परिभाषित
relations:
Files:
type: many
class: File
local: id
foreign: target_id
टी
public function setUp()
{
parent::setUp();
$this->hasOne('Publication', array(
'local' => 'target_id',
'foreign' => 'id'));
$this->hasOne('Event', array(
'local' => 'target_id',
'foreign' => 'id'));
$this->hasOne('Article', array(
'local' => 'target_id',
'foreign' => 'id'));
$this->hasOne('Job', array(
'local' => 'target_id',
'foreign' => 'id'));
}
मैं क्यों ऐसा होता है (प्रतिबन्ध कई तालिकाओं के लिए सेटअप नहीं किया जा सकता है), लेकिन मैं यह कैसे हल कर सकते थे पता नहीं है: अपने Php-संहिता है कि सिद्धांत उत्पन्न करता है (BaseFile.php) है mutltiple फ़ाइल टेबल या एक एसोसिएशन टेबल के बिना समस्या।
क्या डॉक्टर को यह बताने का कोई तरीका है कि इसे फ़ाइल मॉडल में संबंध नहीं बनाना चाहिए?
कोई अच्छा विचार?
क्या मैं पूछ सकता हूं कि आप इसे एसोसिएशन टेबल का उपयोग क्यों नहीं करते हैं? यह एक बहुत ही लचीला और कुशल समाधान है क्योंकि यह आपको एक ही फ़ाइल को कई बार अपलोड किए बिना अलग-अलग सामग्री प्रकारों से लिंक करने की अनुमति देगा। आपके वर्तमान मॉडल के साथ यह असंभव है ... – wimvds
क्या मैं वास्तव में इसे एक एसोसिएशन टेबल के साथ हल कर सकता हूं? मैं "प्रकार" फ़ील्ड के बारे में सिद्धांत कैसे बताऊंगा? – smoove
मुझे नहीं पता कि यह सिद्धांत के साथ कैसे हो सकता है, लेकिन समस्या शायद एक तालिका को जोड़कर सिद्धांत के साथ निहित है जो ** किसी अन्य तालिका पर निर्भर है ** ** इससे पहले कि अन्य तालिका बनाई गई हो। –