通过自定义类访问模型

Ela*_*uwa 1 php oop laravel laravel-5 laravel-5.5

我正试图通过课程访问模型.我试图在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;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

应用程序\ AccountsModel.php

<?php
namespace App\AccountsModel; 
use Illuminate\Database\Eloquent\Model;

class AccountsModel extends Model
{
    protected $table = 'accounts';

}
Run Code Online (Sandbox Code Playgroud)

应用程序/ 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"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我在composer.json上自动加载模型,如下所示.以下任何输入也表示赞赏.我尝试在模型中的构造上回显类名,没有回声,所以我猜我也错误地自动加载了这个.

"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/",
            "AccountsModel\\" : "app/AccountsModel.php"
        }
    },
Run Code Online (Sandbox Code Playgroud)

最终,当我收到错误时,我正试图通过我的自定义Account类访问模型.任何帮助是极大的赞赏.

xmh*_*fiz 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
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

将模型更新为此.只是namespace App;

<?php
namespace App; 
use Illuminate\Database\Eloquent\Model;

class AccountsModel extends Model
{
    protected $table = 'accounts';

}
Run Code Online (Sandbox Code Playgroud)

此外,在composer.json中不需要这个,因为它AccountModel是.的一部分App.

"AccountsModel\\" : "app/AccountsModel.php"
Run Code Online (Sandbox Code Playgroud)