根据给定参数使用推进ORM过滤来自多对多关系的数据

时间:2015-06-07 08:51:01

标签: php orm propel

这是我的数据库结构,

stu_details
-----------
id INT PK AI
f_name VARCAHR(45)
l_name VARCHAR(45)
dob VARCHAR(45)

subject
----------
id INT PK AI
sub_name VARCHAR(45)
day VARCHAR(45)

subject_has_stu_details(associative table)
-----------------------------------------
id INT PK AI
subject_id INT FK (frm subject table)
stu_details_id INT FK (frm stu_details table)

我的schema.xml,

<table name="stu_details" idMethod="native" phpName="StuDetails">
    <column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
    <column name="f_name" phpName="FName" type="VARCHAR" size="45" required="true"/>
    <column name="l_name" phpName="LName" type="VARCHAR" size="45" required="true"/>
    <column name="sex" phpName="Sex" type="VARCHAR" size="45" required="true"/>
    <column name="dob" phpName="Dob" type="VARCHAR" size="45" required="true"/>
    <vendor type="mysql">
      <parameter name="Engine" value="InnoDB"/>
    </vendor>
  </table>
  <table name="subject" idMethod="native" phpName="Subject">
    <column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
    <column name="sub_name" phpName="SubName" type="VARCHAR" size="45" required="true"/>
    <column name="day" phpName="Day" type="VARCHAR" size="45" required="true"/>
    <column name="time" phpName="Time" type="VARCHAR" size="45" required="true"/>
    <vendor type="mysql">
      <parameter name="Engine" value="InnoDB"/>
    </vendor>
  </table>
  <table name="subject_has_stu_details" idMethod="native" phpName="SubjectHasStuDetails">
    <column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
    <column name="subject_id" phpName="SubjectId" type="INTEGER" required="true"/>
    <column name="stu_details_id" phpName="StuDetailsId" type="INTEGER" required="true"/>
    <foreign-key foreignTable="subject" name="fk_subject_has_stu_details_subject1">
      <reference local="subject_id" foreign="id"/>
    </foreign-key>
    <foreign-key foreignTable="stu_details" name="fk_subject_has_stu_details_stu_details1">
      <reference local="stu_details_id" foreign="id"/>
    </foreign-key>
    <index name="fk_subject_has_stu_details_stu_details1_idx">
      <index-column name="stu_details_id"/>
    </index>
    <index name="fk_subject_has_stu_details_subject1_idx">
      <index-column name="subject_id"/>
    </index>
    <vendor type="mysql">
      <parameter name="Engine" value="InnoDB"/>
    </vendor>
  </table>

我试图过滤属于每个学生的科目,并以他或她的名字作为参数。

到目前为止,这是我的代码,

  public function subjects($nm)
     //$nm - student name parameter passing through this 
    {
    $get_Subs=SubjectQuery::create()->join('Subject.SubjectHasStuDetails')
                ->join('SubjectHasStuDetails.StuDetails')
                ->with('StuDetails')->find();
     foreach($get_Subs as $sbj){
         $sbj->getSubName();
      }

通过这段代码,我得到了所有学生共同完成的所有科目。 根据给定的学生过滤主题的任何建议??

1 个答案:

答案 0 :(得分:0)

无论如何,我找到了答案......

scala> val lines = sc.textFile("s3://{bucket}/whatever/2015/05/*.*").map(_.split(",")).map(p
=> zahiro(p(0),p(1),p(2),p(3),p(4),p(5),p(6),p(7))).toDF()