Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] Jak zapisać w bazie relacje many to many
rossol
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.01.2012

Ostrzeżenie: (0%)
-----


Witam.

Piszę aplikację we frameworku Kohana 2.3.4 używając ORM i AJAX.

Mam problem z zapisaniem danych dotyczących poszczególnych tabel w tabeli łączącej.

W bazie mam 3 tabele:
  1. 1. subjects (id, name)
  2. 2. students (id, name)
  3. 3. subjects_students (id, student_id, subject_id)


Dodając nowego studenta przypisuję mu kilka przedmiotów. Później AJAXem wysyłam zapytanie, jeśli jest ok to zapisuje studenta (co ozacza, że mam jego ID).


Metoda zwracająca dane:
  1. public function add_student_ajax()
  2. {
  3. $this->auto_render = false;
  4.  
  5. $student = ORM::factory('student');
  6.  
  7. $post = $_POST;
  8. $obj = new stdClass();
  9.  
  10. // Walidacja dotyczy tylko imienia, nazwiska itd, a nie przedmiotów
  11. if($student->validate($post)){
  12. if(isset($post['subject'])){
  13. foreach($post['subject'] as $k=>$v){
  14. $student->save();
  15. $student->students_subjects->student_id = $student->id;
  16. }
  17. $obj->status = 'ok';
  18. }else{
  19. $obj->status = 'error';
  20. $obj->message = array('Przedmioty są wymagane!');
  21. }
  22. }else{
  23. $obj->status = 'error';
  24. $obj->message = $post->errors('student');
  25. }
  26.  
  27. echo json_encode($obj);
  28. }


I zapytanie AJAXowe:
  1. $('.form_submit').click(function(e){
  2. e.preventDefault();
  3.  
  4. $.ajax({
  5. url: '<?php echo url::site('items/add_student_ajax') ?>',
  6. type: 'post',
  7. data: $('#myform').serialize(),
  8. dataType: 'json',
  9. success: function(res){
  10. if(res.status == 'ok'){
  11. $.colorbox({
  12. html: 'Zapisano',
  13. onClosed: function(){
  14. location.href = '<?php echo url::site('items/students') ?>'
  15. }
  16. });
  17. }else{
  18. var html = '<ul>';
  19. $.each(res.message, function(k, v){
  20. html += '<li>'+v+'</li>';
  21. });
  22. html += '</ul>';
  23. $.colorbox({
  24. html: html
  25. });
  26. }
  27. }
  28. })
  29. })


Przy zapisywaniu studenta dostaję komunikat:
  1. Właściwość students_subjects w klasie Student_Model nie istnieje.


W modelach:
  1. Model Student:
  2. protected $has_and_belongs_to_many = array('subjects');
  3.  
  4. Model Subject:
  5. protected $has_and_belongs_to_many = array('students');


W tabeli Student zapisują się studenci, a w tabeli Subjects zapisują się przedmioty. Nie mam pojęcia natomiast jak w tabeli pośredniej zapisać te dane.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.10.2025 - 21:36