dslf46995 2016-07-27 20:19
浏览 16
已采纳

获取CakePHP 2中的模型列表

I'm trying to get a complete list of all models under app/Model.

Already tried App::objects('Model') but it only retrieves loaded models.

Is this possible in CakePHP 2?

  • 写回答

2条回答 默认 最新

  • duanjiao8007 2016-09-16 18:54
    关注

    After some research I found that App::objects('Model') returns all models under app/Models but it doesn't include Plugin models.

    To include all models (app models and plugin models) I created the next function:

    /**
     * Get models list
     *
     * @return array
     */
    public static function getModels()
    {
        // Get app models
        $models = App::objects('Model');
    
        $models = array_combine($models, $models);
    
        // Get plugins models
        $pluginsFolder = new Folder(APP . 'Plugin');
    
        $plugins = $pluginsFolder->read();
    
        foreach ( $plugins[0] as $plugin ) {
    
            $pluginModels = App::objects($plugin . '.Model');
    
            foreach ($pluginModels as $pluginModel) {
    
                $models[$plugin . '.' . $pluginModel] = $plugin . '.' . $pluginModel;
    
            }
    
        }
    
        // Exclude tableless and application models
        $dataSource = ConnectionManager::getDataSource('default');
    
        $sources = $dataSource->listSources();
    
        foreach($models as $key => $model) {
    
            $table = Inflector::tableize(self::modelName($key));
    
            if (stripos($model, 'AppModel') > -1 || !in_array($table, $sources)) {
    
                unset($models[$key]);
    
            }
    
        }
    
        return $models;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染