【发布时间】:2023-03-14 02:39:06
【问题描述】:
我有两张表,Company 和 Projects。一家公司有许多项目,而一个项目属于一家公司。
Company.php 模型
protected $fillable = [
'id', 'name', 'description'
];
public function projects()
{
return $this->hasMany('App/Project');
}
Project.php 模型
protected $fillable = [
'name', 'description', 'company_id', 'days'
];
public function company()
{
return $this->belongsTo('App/Company');
}
从我的 index.blade.php 中,我只列出了这些公司,并让它们可点击,这样当用户点击列出的公司时,它们会被带到 show.blade.php,其中公司的名称和属于该公司的项目会这样显示。
<div class="jumbotron">
<h1>{{ $company->name }}</h1>
<p class="lead">{{ $company->description }}</p>
</div>
<div class="row">
@foreach($company->projects as $project)
<div class="col-lg-4">
<h2>{{ $project->name }}</h2>
<p class="text-danger">{{ $project->description }}</p>
<p><a class="btn btn-primary" href="/projects/{{ $project->id }}" role="button">View Projects »</a></p>
</div>
@endforeach
</div>
现在收到未定义变量 $project 错误。所以我决定像这样在 CompaniesController.php 的 show() 函数中声明变量
public function show(Company $company)
{
$company = Company::find($company->id);
$projects = Company::find(1)->projects;
return view('companies.show', ['company' => $company, 'projects' => $projects]);
}
像这样访问 show.blade.php 中的变量
<div class="jumbotron">
<h1>{{ $company->name }}</h1>
<p class="lead">{{ $company->description }}</p>
</div>
<div class="row">
@foreach($projects as $project)
<div class="col-lg-4">
<h2>{{ $project->name }}</h2>
<p class="text-danger">{{ $project->description }}</p>
<p><a class="btn btn-primary" href="/projects/{{ $project->id }}" role="button">View Projects »</a></p>
</div>
@endforeach
</div>
现在我在访问 show.blade.php 时收到 Class 'App/Project' not found 错误。我在将公司项目传递给视图时遇到了挑战。任何帮助将不胜感激。这是我的路线;
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('companies', 'CompaniesController');
Route::resource('projects', 'ProjectsController');
【问题讨论】:
标签: php laravel eloquent laravel-blade