我在app / Classes / Common.php中创建了一个公共类 但每当我尝试在类函数中访问模型时。
$new_booking_request = BookingRequest::where('host_id','=',Auth::id())
我收到此错误
Class 'App\Models\BookingRequest' not found
即使是其他类,如Auth,URL和Cookie也无效。 有没有办法将所有类放在我的Common类范围内?
答案 0 :(得分:1)
当您的命名空间错误或忘记命名空间时,就会出现此问题。
由于common.php在App / Classes中,所以在Common.php中做了类似的事情:
<?php namespace App\Classes;
use View, Auth, URL;
class Common {
//class methods
}
还要确保您的模型类具有正确的命名空间,如果BookingRequest.php位于App \ Models内,则在BookingRequest.php内执行此操作:
<?php namespace App\Models;
BookingRequest extends \Eloquent {
//other definitions
}
然后,如果您希望在其命名空间之外或其他命名空间中使用BookingRequest.php,请执行以下操作:
<?php namespace App\Classes;
use App\Models\BookingRequest;
use View, Auth, URL;
class Common {
//class methods
}
答案 1 :(得分:0)
在Laravel 5中,所有内容都是命名空间,请确保您的类具有正确的命名空间,并且您使用指定的相同命名空间调用它。
要在其他类中包含类,请确保使用use
关键字在类定义之上导入必要的类。您也可以使用\
全局调用该类。例如:\Auth
,\URL
和\Cookie
对于L5中的命名空间,这是一个简单的例子:
<?php namespace App\Models;
class BookingRequest {
// class definition
}
然后在尝试调用该类时,要么调用该函数的完整命名空间路径,要么包含该函数。
<?php
class HomeController extends Controller {
public function index()
{
$newBookingRequest = App\Models\BookingRequest::where('host_id','=',Auth::id());
}
}
OR
<?php namespace App\Controllers;
use App\Models\BookingRequest; // Include the class
class HomeController extends Controller {
public function index()
{
$newBookingRequest = BookingRequest::where('host_id','=',Auth::id());
}
}
PS:
在定义类属性和方法时请使用camelCase
,因为这有助于在使用L5框架时获得更好的代码样式和命名约定。