Я пытаюсь найти способ получить данные из разных связанных таблиц в Кохане.
У меня есть таблица файлов, которая определяется как:
class Model_File extends ORM {
protected $_belongs_to = array
(
'student' => array ('foreign_key' => 'student_id' )
);
}
Затем таблица сеанса:
class Model_Filesession extends ORM {
protected $_primary_key = 'id';
protected $_table_name = 'file_sessions';
protected $_belongs_to = array
(
'file' => array ('modele'=> 'file' , 'foreign_key' => 'file_id' ),
'subject' => array ('modele'=> 'subject' , 'foreign_key' => 'subject_id' ),
'place' => array ('modele'=> 'place' , 'foreign_key' => 'place_id' ),
'teacher' => array ('modele'=> 'teacher' , 'foreign_key' => 'teacher_id' )
);
}
Таким образом, нет прямой связи между файловой сессией и студентом ... Поэтому я не могу добавить ее в соединение с файловой сессией (-> with ('student'))
В настоящее время я делаю это:
$fileSessions = ORM::factory('filesession')
->with('subject')
->with('teacher')
->with('place')
->with('file')
->where('payment_id','=',$payment_id)
->order_by('sessionDate','DESC')
->find_all();
Как я могу изменить этот запрос на JOIN в таблице учеников?
Другими словами ... мне просто нужно добавить следующее:
INNER JOIN students ON students.id = file.student_id
Но с помощью Kohana ORM
Изменить (добавлена модель ученика)
class Model_Student extends ORM {
protected $_has_one = array(
'file' => array(
'model' => 'file',
'foreign_key' => 'student_id',
),
);
protected $_belongs_to = array
(
'level' => array ('foreign_key' => 'level_id' )
);
}