我正在尝试在我的CodeIgniter项目中实现雄辩。
当我在项目中调用模型时,它会很好地工作(它会从数据库中提供数据)。但是,当我尝试为其模型调用关系时,就出错了,并显示以下消息:
An uncaught Exception was encountered
Type: Error
Message: Class 'application\models\Profile' not found
Filename: /var/www/public/chupspace-git/vendor/illuminate/database/Eloquent/Model.php
Line Number: 750
Backtrace:
File: /var/www/public/chupspace-git/application/models/User.php
Line: 12
Function: hasOne
File: /var/www/public/chupspace-git/vendor/illuminate/database/Eloquent/Model.php
Line: 2638
Function: profile
File: /var/www/public/chupspace-git/vendor/illuminate/database/Eloquent/Model.php
Line: 2573
Function: getRelationshipFromMethod
File: /var/www/public/chupspace-git/vendor/illuminate/database/Eloquent/Model.php
Line: 3263
Function: getAttribute
File: /var/www/public/chupspace-git/application/controllers/UserController.php
Line: 53
Function: __get
File: /var/www/public/chupspace-git/index.php
Line: 357
Function: require_once
我在"illuminate/database": "5.0.28",
中使用composer.json
库
这是我的模特
User.php
if (!defined('BASEPATH')) exit('No direct script access allowed');
use \Illuminate\Database\Eloquent\Model as Eloquent;
class User extends Eloquent {
protected $table = "users";
public function profile()
{
return $this->hasOne('application\models\Profile');
}
}
Profile.php
if (!defined('BASEPATH')) exit('No direct script access allowed');
use \Illuminate\Database\Eloquent\Model as Eloquent;
class Profile extends Eloquent {
protected $table = "user_profiles";
}
这是我的目录图。
让我知道是否缺少信息,因此我可以更新此线程。 您的帮助对我来说非常宝贵。谢谢。
答案 0 :(得分:0)
使用它之前,您需要加载所有关系类。
首先,您需要在application/config/config.php
中启用作曲家自动加载功能。只需将$config['composer_autoload']
设置为TRUE
然后,您需要扩展composer.json
来加载每个模型:
{
"autoload": {
"classmap": ["application/models/"]
}
}
然后您需要重新生成自动加载文件(在cli中运行):
composer dump-autoload
应该可以。还有更多其他方法可以做到,但是我认为这是最清楚的。
答案 1 :(得分:0)
我找到了解决方案。我们只需要更改
$this->hasOne('application\models\Profile');
成为
$this->hasOne(new Profile());
这是我的完整代码。
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
use \Illuminate\Database\Eloquent\Model as Eloquent;
class User extends Eloquent {
protected $table = "users";
public function profile()
{
// dd();
return $this->hasOne(new Profile());
}
}
对我有用。