2016-01-21 41 views
0

我想在php mysql中获取文件夹和子文件夹内容的内容。 我建一个表,以保持文件夹结构如下使用CakePHP 2.x列出文件夹和子文件夹的内容

image1

而另一台为文件夹中的媒体内容,这是如下

Image2

在第一个表我保留parent_id以存储父文件夹标识。

  • 0代表父文件夹ID。
  • 假设我有在根文件夹1,2,3
  • 4,5内部1.
  • 6,7-内2

媒体内容表被存储内容的每个folder_id

现在我需要在CakePHP中显示文件夹结构和内容。

我已经上市的第一级。如下

$folderArr = $this->ProjectFolder->find('all', 
         array(        
          'conditions'=> 
           array(
             'ProjectFolder.is_delete'=>'0', 
             'ProjectFolder.parent_id'=>$pid, 
             'ProjectFolder.user_id' => $userId 
            ), 
           ) 
       ); 


    $folderContent = $this->ProjectMediaContent->find('all', 
         array(        
          'conditions'=> 
           array(           
             'ProjectMediaContent.project_folder_id'=>$pid,           
            ), 
          ) 
       ); 
    //$log = $this->ProjectMediaContent->getDataSource()->getLog(false, false); 
    //debug($log); 
    //exit; 
    $content = Array(); 

    if(!empty($folderContent)){ 
     $mediapath = $thumbpath = ''; 
     foreach($folderContent as $mediaContent){ 
      if(!empty($mediaContent['ProjectMediaContent']['media'])){ 
       $mediapath = Router::url('/', true).'files/folder/'.$mediaContent['ProjectMediaContent']['media']; 
       $thumbpath = Router::url('/', true).'files/folder/thumbs/'.$mediaContent['ProjectMediaContent']['media']; 
      }else{ 
       $mediapath = $mediaContent['ProjectImage']['actual_url']; 
       $thumbpath = $mediaContent['ProjectImage']['thumb_url']; 
      } 
      $parentFolderContent[] = array(
       "mediaId"  => $mediaContent['ProjectMediaContent']['project_media_content_id'],     
       "mediaType"  => $mediaContent['ProjectMediaContent']['media_type'], 
       'socialPlatForm'=> $mediaContent['ProjectImage']['image_source'], 
       'actualPath' => $mediapath, 
       'thumbPath'  => $thumbpath, 
       'socialId'  => $mediaContent['ProjectImage']['social_id'],    
      ); 
     } 
    } 
    if(!empty($folderArr)){ 
     foreach($folderArr as $val){ 
      //print_r($this->getFolderListing($val['ProjectFolder']['project_folder_id'],$userId));die('jj'); 
      $content[] = array(
           'Folderid' => $val['ProjectFolder']['project_folder_id'], 
           'FolderName' => $val['ProjectFolder']['folder_name'], 

          ); 
     } 
    } 

项目文件夹型号如下

class ProjectFolder extends AppModel{ 
    public $name   = 'ProjectFolder'; 
    public $primaryKey  = 'project_folder_id'; 
    public $displayField = 'folder_name'; 
    public $actsAs   = array('Containable'); 

    public $belongsTo = array(
     'User' => array(
     'className' => 'User', 
     'foreignKey' => 'user_id' 
    ), 
    ); 
    public $hasMany = array(
     'ProjectMediaContent' => array(
     'className' => 'ProjectMediaContent', 
     //'dependent' => true, 
     //'exclusive' => true, 
    ) 
); 

} 

ProjectMediaContent型号如下

class ProjectMediaContent extends AppModel{ 
    public $name   = 'ProjectMediaContent'; 
    public $primaryKey  = 'project_media_content_id'; 

    //public $useTable = 'project_medias'; 
    public $belongsTo = array(
     'ProjectFolder' => array(
      'className' => 'ProjectFolder', 
      'foreignKey'=>'project_folder_id' 
    ), 
    'ProjectImage' => array(
     'className' => 'ProjectImage', 
     'foreignKey'=>'project_image_id' 
    ) 
); 
} 
+0

那么你的问题是什么?采取[StackOverflow旅游](http://stackoverflow.com/tour)和阅读[如何问](http://stackoverflow.com/help/how-to-ask)! – Ben

+0

抱歉,问的方式不好。我是新来的,只是试图获取每个文件夹和子文件夹以及这些内容。 –

+0

“ProjectFolder”与“ProjectMediaContent”相关吗? 'hasOne','hasMany'? –

回答

0

下应该取你需要的所有数据:

$this->ProjectFolder->contain(array(
    'ProjectMediaContent'=>'ProjectImage' 
)); 

$folderArr = $this->ProjectFolder->find('theaded', array(
    'conditions'=> array(
     'ProjectFolder.is_delete'=>'0', 
     'ProjectFolder.user_id' => $userId 
    ), 
)); 

我会通过$folderArr,而不是重新排列控制器中的数据。

相关问题