【发布时间】:2018-09-27 23:13:51
【问题描述】:
这件事让我很难过。
我收到此错误/反射异常 -> Class App\Providers\App\Campaign 不存在
Campaign 是为应用创建的类。
奇怪的是,这个错误只在我使用“显示”资源路由时出现。当我使用“索引”路线列出它时。我没有收到任何错误。
课程如下:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Campaign extends Model
{
protected $table='campaigns';
protected $primaryKey = 'campaignID';
protected $fillable = [
'campaignID',
'campaignName',
'shortDescription',
'longDescription',
];
public function company(){
return $this->belongsTo('App\Company','companyID','companyID');
}
public function person(){
return $this->belongsTo('App\Person','campaignID','campaignID');
}
}
这是控制器的“显示”功能
public function show(Campaign $campaign)
{
$campaign = Campaign::find($campaign->campaignID);
return view('campaigns.show', ['campaign'=>$campaign]);
}
编辑 - 这是整个控制器
<?php
namespace App\Http\Controllers;
use App\Campaign;
use App\User;
use App\Company;
use App\Lead;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
class CampaignsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$campaigns=Campaign::get();
return view('campaigns.index', ['campaigns'=> $campaigns]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('campaigns.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$coID = Auth::user()->companyID;
$uID = Auth::user()->id;
$campaign = Campaign::create([
'campaignName' => $request->input('campaignName'),
'shortDescription' => $request->input('shortDescription'),
'longDescription' => $request->input('longDescription'),
]);
if($campaign){
$campaigns=Campaign::where('companyID',Auth::User()->companyID)->get();
return view('campaigns.index', ['campaigns'=> $campaigns])
->with('success' , 'Campaign created successfully');
}
return back()->withInput()->with('errors', 'Error creating new campaign');
}
/**
* Display the specified resource.
*
* @param \App\Campaign $campaign
* @return \Illuminate\Http\Response
*/
public function show(Campaign $campaign)
{
$campaign = Campaign::find($campaign->campaignID);
return view('campaigns.show', ['campaign'=>$campaign]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Campaign $campaign
* @return \Illuminate\Http\Response
*/
public function edit(Campaign $campaign)
{
$campaign = Campaign::find($campaign->campaignID)->toSQL();
dd($campaign);
return view('campaigns.edit', ['campaign'=>$campaign]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Campaign $campaign
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Campaign $campaign)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Campaign $campaign
* @return \Illuminate\Http\Response
*/
public function destroy(Campaign $campaign)
{
//
}
public function listcompanycampaigns()
{
$campaigns=Campaign::where('companyID',Auth::User()->companyID)->get();
return view('campaigns.index', ['campaigns'=> $campaigns]);
}
public function listambassadorcampaigns()
{
$campaigns = Campaign::get();
return view('campaigns.ambassadorindex', ['campaigns'=> $campaigns]);
}
}
我已经清除缓存和“composer dump-autoload”无济于事。
感谢你们提供的任何帮助。
吉夫斯
【问题讨论】:
-
你展示控制器的全部代码
-
控制器中有
use App\Providers\Campaign吗? -
请注意,“App”在此命名空间“App\Providers\App\Campaign”中出现了两次。检查所有命名空间。确保控制器的 show() 方法正在注入 App\Campaign 而不仅仅是 Campaign。
-
是的。这是应用程序显示两次的奇怪之处。我已经验证 App/Providers 不在控制器中。我认为它甚至没有进入 show 函数,因为我试图添加一个中断来显示生成的 SQL 并且没有显示。
标签: php laravel reflection