拉拉维尔 |无法将多个关键字映射以返回组合结果 |找不到类“App\Http\Controllers\API\Post”
Posted
技术标签:
【中文标题】拉拉维尔 |无法将多个关键字映射以返回组合结果 |找不到类“App\\Http\\Controllers\\API\\Post”【英文标题】:Laravel | Unable to get multiple keywords mapped to return combined results | Class 'App\Http\Controllers\API\Post' not found拉拉维尔 |无法将多个关键字映射以返回组合结果 |找不到类“App\Http\Controllers\API\Post” 【发布时间】:2020-12-17 22:44:50 【问题描述】:问题:
我试图在单个查询中搜索多个关键字,但由于某种原因,我总是收到此错误:
[2020-08-29 03:50:02] development.ERROR: Class 'App\Http\Controllers\API\Post' not found "exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Class 'App\\Http\\Controllers\\API\\Post' not found at /home2/examplehat/public_html/shopper/app/Http/Controllers/API/ClassifiedSearchAPIController.php:78)
[stacktrace]
这是我的控制器的索引函数:
public function index(Request $request)
try
$this->productRepository->pushCriteria(new RequestCriteria($request));
$this->productRepository->pushCriteria(new LimitOffsetCriteria($request));
$this->productRepository->pushCriteria(new ProductsOfFieldsCriteria($request));
if($request->get('trending',null) == 'week')
$this->productRepository->pushCriteria(new TrendingWeekCriteria($request));
else
$this->productRepository->pushCriteria(new NearCriteria($request));
$queryString = $request->query;
if ($queryString = $request->query('search'))
// [$column, $term] = explode(':', $queryString);
$terms = explode(" ", request('q'));
$products = Product::query()
->whereHas('store', function ($query) use ($terms)
foreach ($terms as $term)
// Loop over the terms and do a search for each.
$query->where('name', 'like', '%' . $term . '%');
)
->get();
else
$products = $this->productRepository->all();
catch (RepositoryException $e)
return $this->sendError($e->getMessage());
return $this->sendResponse($products->toArray(), 'Products retrieved successfully');
有人可以帮我理解需要做什么来修复所述错误吗?我试过use App\Post;
,但没有帮助。
【问题讨论】:
使用完整的命名空间$products = \App\Post::query()....
试过这个。日志中仍然存在相同的错误..日志说:[2020-08-29 04:11:01] development.ERROR: Class 'App\Post' not found "exception":"[object] (Symfony\\Component\ \Debug\\Exception\\FatalThrowableError(代码:
那么您在哪里创建了您所指的Post
模型?你在哪个命名空间中定义的?
@lagbox :我在文件夹中的任何地方都看不到 Post 模型。我不是很熟悉.. 我应该像***.com/questions/39593645/class-app-post-not-found 中指定的那样创建一个吗?请原谅我的无知,我只是 Laravel 的初学者
那么你怎么知道要使用这个Post
模型呢?它应该是什么,它来自哪里?你必须有一些理由来引用它......这是一个错字吗?你实际上指的是你已经注释掉的Product
模型? :)
【参考方案1】:
你需要在控制器和模型中使用命名空间
控制器:
namespace App\Http\Controllers;
use App\Post;
型号:
namespace App;
名称空间允许您通过以下方式将代码划分为逻辑组 将它们定义到自己的“命名空间”中。后面的文本字符串 "namespace" 关键字标识名称空间和它下面的所有代码 然后生活在该名称空间中。命名空间也提供了一种方法 组接口函数和常量。
你可以阅读更多关于namespace的信息。
希望这适用于您的情况!
【讨论】:
我仍然得到 [2020-08-29 04:07:14] development.ERROR: Class App\Models\Product 不存在 "exception":"[object] (ReflectionException(code: -1): 类 App\\Models\\Product 在日志中执行 n.. 你认为有什么问题? 对命名空间的快速解释可以帮助改进这个答案以上是关于拉拉维尔 |无法将多个关键字映射以返回组合结果 |找不到类“App\Http\Controllers\API\Post”的主要内容,如果未能解决你的问题,请参考以下文章