【问题标题】:One To Many relationship codeigniter/datamapper一对多关系codeigniter/datamapper
【发布时间】:2011-02-20 10:12:42
【问题描述】:

我需要这方面的帮助:

2张桌子

Service : 有很多 Sub_Service Sub_Service : 有一个服务

我的代码:

    $services = new Service();
    $services->where('org_id', $org_id)->get();
    $services->sub_service->get();

    foreach($services as $service)
    {
        echo $service->title;

        foreach($service->sub_service as $sub_service)
        {
                  echo $sub_service->title;
        }
    } 

但它不起作用,如果我想访问 sub_service 我必须将它从第一个循环中取出并执行类似的操作

foreach($services->sub_service as $sub_service)
            {
                   echo $sub_service->title;
            } 

但这不是我想要的,我想要一个这样的数组:

服务 1

—子服务 1

—子服务 3

服务 2

服务 3

—子服务 2

我正在使用 DM 1.8 和 CI2 的信息。

谢谢你的帮助

【问题讨论】:

    标签: php codeigniter codeigniter-2 codeigniter-datamapper


    【解决方案1】:

    尝试使用 datamapper 对象中可用的 'all' 属性

    foreach($services->all as $service)
    {
        echo $service->title;
    
        foreach($service->sub_service->all as $sub_service)
        {
                  echo $sub_service->title;
        }
    } 
    

    【讨论】:

      【解决方案2】:

      您必须使用 datamapper 的 include_join_fields 方法才能根据需要创建关系。在您的控制器中,包括以下内容:

      $service = new Service();
      $data = $service->get(); 
      $options['records'] = $data;
      

      然后在您看来,您可以这样做:

          if(isset($records)){
      
          foreach($records as $service){
      
                  echo $service->title;
              $subservice = $service->subservice->include_join_fields()->get();
      
              foreach($subservise as $subservice){
                  if(!is_null($subservice->title)){  
                      echo $subservice->title;
                  }
              }
      
          }
      

      这会给你你想要的。

      【讨论】:

        猜你喜欢
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        相关资源
        最近更新 更多