通过自定义访问模型 Class
Accessing Model Through Custom Class
我正在尝试通过 class 访问模型。
我正在尝试在 Laravel 5.5 安装上完成这项工作。
文件夹结构是默认的,除了我在 App/Libraries 中有一个文件夹保存我的自定义 classes.
我的问题是当我尝试通过 class 访问模型时出现以下错误。可能是命名空间问题,但我似乎找不到它。它看错地方了。
错误是
Class 'App\Libraries\App\AccountsModel' not found
下面是我的代码。
app/Libraries/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;
}
}
?>
app\AccountsModel.php
<?php
namespace App\AccountsModel;
use Illuminate\Database\Eloquent\Model;
class AccountsModel extends Model
{
protected $table = 'accounts';
}
app/Http/Controllers/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 上自动加载模型,如下所示。
对以下任何输入也表示赞赏。
我尝试在模型中的构造上回显 class 名称,但没有回显,所以我猜我也错误地自动加载了它。
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\": "app/",
"AccountsModel\" : "app/AccountsModel.php"
}
},
最终,当我收到错误消息时,我试图通过我的自定义帐户 class 访问该模型。
非常感谢任何帮助。
在您的 app/AccountsModel.php
文件中,命名空间应该是 App
namespace App;
composer.json
文件中不需要以下条目
"AccountsModel\" : "app/AccountsModel.php"
class 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"
我正在尝试通过 class 访问模型。 我正在尝试在 Laravel 5.5 安装上完成这项工作。 文件夹结构是默认的,除了我在 App/Libraries 中有一个文件夹保存我的自定义 classes.
我的问题是当我尝试通过 class 访问模型时出现以下错误。可能是命名空间问题,但我似乎找不到它。它看错地方了。
错误是
Class 'App\Libraries\App\AccountsModel' not found
下面是我的代码。
app/Libraries/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;
}
}
?>
app\AccountsModel.php
<?php
namespace App\AccountsModel;
use Illuminate\Database\Eloquent\Model;
class AccountsModel extends Model
{
protected $table = 'accounts';
}
app/Http/Controllers/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 上自动加载模型,如下所示。 对以下任何输入也表示赞赏。 我尝试在模型中的构造上回显 class 名称,但没有回显,所以我猜我也错误地自动加载了它。
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\": "app/",
"AccountsModel\" : "app/AccountsModel.php"
}
},
最终,当我收到错误消息时,我试图通过我的自定义帐户 class 访问该模型。 非常感谢任何帮助。
在您的 app/AccountsModel.php
文件中,命名空间应该是 App
namespace App;
composer.json
文件中不需要以下条目
"AccountsModel\" : "app/AccountsModel.php"
class 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"