注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

laravel 4 框架 workbench 里如何使用model(How to use models in workbench(package)?)  

2013-07-05 14:36:42|  分类: Web技术-Php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在 laravel 4 框架 workbench 里如何使用model(How to use models in workbench(package)?)?
有时候我们会在 packeage里使用model之类的。那么我们如何导入这些model呐?一般,如果我们在 app/models 里定义了model ,那么不管是在routes.php导入还是controller里使用,我们都可以直接:

<?php

$use = new User();

//或者

User::all();

这都是可以正常导入的。但是在package(workbench)里使用时,总会有这样那样的问题。
比如:我创建了一个一包,文件结构如下(注:如何创建包,参看:http://fc-lamp.blog.163.com/blog/static/17456668720135893854416/):

workbench/fclamp/test/src/

然后,我在创建了model(myUser):

workbench/fclamp/test/src/models/myUser.php

现在我们来使用这个model,我们在创建routes.php.

workbench/fclamp/test/src/Fclamp/Test/routes.php

在routes.php文件里写入:
Route::get('test',function(){
	$s = new myUser();
});

现在,我们来访问:http://www.test.com/test/  我们得到如下信息:
Class 'Fclamp\Test\TestServiceProvider' not found
那么说明包没有自动导入进来,我们需要运行下面的命令行:

composer dump-autoload

注意:1)  此命令需要你已成功安装 composer,参看:http://fc-lamp.blog.163.com/blog/static/17456668720135893854416/
          2 ) 你需要进入 workbench/fclamp/test/ 目录后,再执行此命令。

运行完成后,那么你将在 workbench/fclamp/test/看到如下的目录:
laravel 4 框架 workbench 里如何使用model(How to use models in workbench(package)?) - fc_lamp - @fc_lamp


ok,我们再来访问:http://www.test.com/test/  你可能又会得到如下信息:
 Class 'myUser' not found.....


这说明我们的model没有正确的导入进来,那么我们采用什么方法来修复呐?如下:
打开文件:

/workbench/fclamp/test/vendor/composer/autoload_namespaces.php

添加:

<?php

// autoload_namespaces.php generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
'Fclamp\\Test' => array($baseDir . '/src'),
'myUser' => array($baseDir . '/src/models'),//添加
);

我们添加了:''myUser' => array($baseDir . '/src/models'),' 这行代码(注意:我们这里没有定义命名空间而是直接使用的类名,如果你定义的空间名称,请使用空间名称)。

如果在控制器 workbench/fclamp/test/src/Fclamp/Test/Controllers/TestController.php 中调用你可能需要这样:

<?php

namespace Fclamp\Test\Controllers;

use myUser;//注意空间名称

class TestController extends Controller
{


public function test()

{

myUser::all();

}

}



再来运行,一切OK了。
相关问题:http://forums.laravel.io/viewtopic.php?id=10483

  评论这张
 
阅读(1348)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017