עוד בעניין PHPCAKE

קרמיט524

New member
עוד בעניין PHPCAKE

אני מנסה לשמור מידע לטבלה מקושרת.
נתונה טבלה ראשית, נניח טבלת פוסטים. הוספתי שם רשומה חדשה. קיבלתי חזרה את המזהה של הרשומה.
עכשיו אני רוצה להכניס רשומה לטבלה מקושרת, שלצורך העניין היא טבלת תמונות.
אני רוצה להכניס לטבלה הזאת רשומה חדשה המכילה את היורל של התמונה, ומזהה הפוסט (שקיבלתי בביצוע השאילתא הקומת) שהיא שייכת אליו.
לא מצליחה לעשות את זה
. ניסיתי לחפש בגוגל, ואני מקבלת ערמות של חפירות שלא מביאות אותי לשום מקום...
זה הקטע מתוך האקשן הרלוונטי, שבודק אם נוצרה רשומה חדשה, ואם כן, אמור להכניס רשומה גם לטבלת התמונות:

if (!empty($post)) {
// if the ID of the newly created post has been set
^this->request->data['Photo']['post_id'] = ^post->id;
^this->request->data['Photo']['photo_url'] = ^file_url;
^this->request->data['Photo']['title'] = ^this->request->data['Post']['title'];
^this->request->data['Photo']['alt'] = ^this->request->data['Post']['title'];
^this->Post->Photo->save($this->request->data);
}

(כמובן צריך להחליף את ה ^ בדולר)

מה אני מפספסת?

בתודה מראש ובברכה,
 

קרמיט524

New member
כן, הגדרתי במודל

ובאמת, כאשר אני מציגה את הנתונים בוויו, עוברים גם הנתונים של הטבלה המקושרת מהקונטרולר.

השאלה אם אני לא מפספסת משהו מבחינת הסינטקס.
 

zeshe shoel

New member
נסין

(לא עבדתי המון זמן עם קייק ככה שיכול להיות שאני טועה)

במקום:

this->Post->Photo->save($this->request->data);


תעשי:

this->Post->Photo->save($this->request->data['Photo']);


למה את לא מציבה את המידע במשתנה חדש ומוסיפה אותו ל request? יש שם גם מידע על הפוסט ויכול להיות שהמודל לא יודע מה לקחת.

סתם ניחוש מושכל...
 

קרמיט524

New member
תודה אנסה היום בערב.

אנסה גם להציב במערך חדש, למרות שלא חשבתי שזה משנה
 

zeshe shoel

New member
לא המערך החדש יפתור את הבעיה

הוא רק יעשה טיפה סדר.

נראה לי שהבעיה היא שאת שלחת את כל ה Request במקום רק את המידע של ה Photo.
 

קרמיט524

New member
אז ככה:

1. קודם כל - בדקתי במודלים הרלוונטיים. במודל פוסטים הגדרתי קישור hasmany לטבלת התמונות:

public ^hasMany = array(
'Post_Photo' =>
array (
'className' => 'Photo'
)
);

ובמודל תמונות הגדרתי:

public ^belongsTo = array(
'Post' => array(
'className' => 'Post',
'foreignKey' => 'post_id'
)
);


אגב, אני לא בטוחה אם צריך להיות להם אותו אליאס או לא. ניסיתי את שתי האפשרויות - לא עובד.

ניסיתי לשמור את כל הערכים במערך אחר ולשמור - זה גם לא עובד:

if (!empty(^post)) {

^photo_data = array();
^photo_data['post_id'] = ^post->id;
^photo_data['photo_url'] = ^file_url;
^photo_data['title'] = ^this->request->data['Post']['title'];
^photo_data['alt'] = ^this->request->data['Post']['title'];
^this->Post->Photo->save($photo_data);
}


הכי מעצבן אני לא מקבלת שום הודעת שגיאה. הטבלה פשוט נשארת ריקה.
האם יש דרך להדפיס את השאילתא שמתבצעת (או לא) בפועל?
 

קרמיט524

New member
כלומר - רק דרך קבצי לוג והגדרות קונפיגורציה?

אין דרך לעשות את זה בסקריפט - כמו וארדאמפ?
בכל מקרה, אבדוק את זה - תודה!
 

קרמיט524

New member
האמת שזה פסיכי שאני עד עכשיו לא מוצאת שום

דוגמה כתובה ברשת לאיך שומרים נתונים לטבלה מקושרת. הכל ממש תאורטי ומעורפל. הכי רחוק שהגעתי זה דוגמה לאיך מגדירים את יחסי הגומלין במודל, ואיך שולפים את הנתונים מטבלה מקושרת. אבל בשום מקום אין ממש את כל התהליך. או איך אפשר לעשות לזה troubleshooting. זה ממש מעצבן.
 

קרמיט524

New member
אוקי, העלילה מסתבכת

קודם כל - מסתבר שהיה לי EXIT באמצע הפונקציה - כך שמעולם אפילו לא התרחש נסיון להכניס את הנתונים לטבלה...

אבל עכשיו, כאשר באמת מגיעים לשלב שבו הנתונים אמורים להיות מוכנסים לטבלה המקשהת, אני מקבלת הודעת שגיאה:

Error: Call to a member function save() on a non-object
File: myfile line 44

השורה שעליה קמה הצעקה היא:

^this->Post->Photo->save(^photo_data);


בעצם החוליה החסרה מבחינתי, היא איך מצביעים על המאפיין "PHOTO" בתוך המודל POST.
ואת התשובה לשאלה הזאת אני פשוט לא מוצאת בשום מקום.

הדבר הכי קרוב שהגעתי עליו הוא הלינק הזה:
http://book.cakephp.org/2.0/en/models/saving-your-data.html
שאני כבר שעה מנסה לקרוא אותו, ופשוט מקבלת מחלת ים החל מהשורה הרביעית.
 
למעלה