【发布时间】:2016-01-21 15:34:32
【问题描述】:
我正在尝试在 php mysql 中获取文件夹和子文件夹的内容。 我已经建立了一个表来维护文件夹结构如下
还有一个文件夹的媒体内容表,如下
在第一张桌子上,我正在维护一个 parent_id 来存储父文件夹 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'
)
);
}
【问题讨论】:
-
那么你的问题是什么?拿起StackOverflow tour 并阅读How to Ask!
-
抱歉问的不好。我是新来的,只是想获取每个文件夹和子文件夹以及这些内容。
-
ProjectFolder与ProjectMediaContent有什么关系?hasOne,hasMany? -
@Inigo 我已经用 ProjectFolder 有许多 ProjectMediaContent 和 ProjectMediaContent 属于 ProjectFolder 模型的模型更新了问题
标签: php mysql cakephp parent-child cakephp-2.x