我正在尝试通过课程访问模型。 我试图在Laravel 5.5安装上完成这项工作。 文件夹结构是默认的,除了我在App / Libraries中有一个文件夹来保存我的自定义类。
我的问题是,当我尝试通过我的班级访问模型时,我收到以下错误。可能是命名空间问题,但我似乎无法找到它。它正在寻找错误的地方。
错误是
未找到类'App \ Libraries \ App \ AccountsModel
以下是我的代码。
应用程序/库/ Account.php
<?php
namespace App\Libraries;
use App\AccountsModel;
class Account {
public $accountNum;
public $accountDescription;
public $isMainAccount;
public $parentAccount;
public $createTime;
public $updatedTime;
public function getInfo($accountNum)
{
$account = App\AccountsModel::where('accountNumber', $accountNum)->take(1)->get(); //Error coming up due to this line
//return $account;
//return $this;
}
}
?>
应用\ AccountsModel.php
<?php
namespace App\AccountsModel;
use Illuminate\Database\Eloquent\Model;
class AccountsModel extends Model
{
protected $table = 'accounts';
}
应用程序/ HTTP /控制器/ AccountsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Libraries\Account;
class AccountsController extends Controller
{
public function create()
{
$account = new Account;
var_dump($account->getInfo("1-1000"));
}
}
我在composer.json上自动加载模型,如下所示。 以下任何输入也表示赞赏。 我尝试在模型中的构造上回显类名,没有回声,所以我猜我也是错误地自动加载。
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/",
"AccountsModel\\" : "app/AccountsModel.php"
}
},
最终,当我收到错误时,我正试图通过我的自定义Account类访问模型。 非常感谢任何帮助。
答案 0 :(得分:5)
班级AccountsModel
已包含在use
部分中。因此,您可以使用AccountsModel
代替App\AccountsModel
。请参阅下面的更新代码
<?php
namespace App\Libraries;
use App\AccountsModel;
class Account {
public $accountNum;
public $accountDescription;
public $isMainAccount;
public $parentAccount;
public $createTime;
public $updatedTime;
public function getInfo($accountNum)
{
$account = AccountsModel::where('accountNumber', $accountNum)->take(1)->get(); // this line updated
}
}
?>
将您的模型更新为此。只需namespace App;
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AccountsModel extends Model
{
protected $table = 'accounts';
}
此外,composer.json中不需要这样做,因为AccountModel
是App
的一部分。
"AccountsModel\\" : "app/AccountsModel.php"
答案 1 :(得分:2)
在app/AccountsModel.php
文件中,名称空间应为App
namespace App;
并且composer.json
文件
"AccountsModel\\" : "app/AccountsModel.php"