我正在尝试编写一个简单的事件页面。这个页面应该显示一个特定的事件和它的功能(包括其他信息不相关的问题)。
我已经尝试了几种不同的方法,但没有成功,这是我觉得我可能接近成功的方法,有什么建议吗?
我可以提供其他提取的代码,如果你认为问题在于其他地方,但我认为我的问题在于这7个文件。
我遇到的当前错误是“Property [features] does not exist on this collection instance.”并指向EventController show()函数。如果有人能帮助我,我将非常感谢。
web.php
Route::get('cards/{id}', 'CardController@show');
Route::get('event/{id}', 'EventController@show');
event.blade.php
<h1 class="big-title">
</h1>
<section id="events">
@each('partials.event', $event, 'event')
</section>
(部分)event.blade.php
<header>
<h2 class="event-name fsb">
{{ $event->name }}
</h2>
</header>
<p class="event-description pdl1em">
{{ $event->description }}
</p>
<ul class="event-dates pdl1em">
<ul>
@each('partials.features', $event_features, 'feature')
</ul>
</ul>
Event.php
class Event extends Authenticatable
{
public function features() {
return $this->hasMany('App\Models\EventFeature');
}
}
EventFeature.php
class EventFeature extends Authenticatable
{
public function event() {
return $this->belongsTo('App\Models\Event');
}
}
事件控制器
class EventController extends Controller
{
public function show($id)
{
$event = DB::table('event')->where('id', $id)->get();
return view('pages.event', ['event' => $event, 'features' => $event->features]);
}
}
事件功能控制器
class EventFeatureController extends Controller
{
public function show($id)
{
$event_features = DB::table('event_features')->where('id', $id)->get();
return view('pages.event', ['event' => $event_features->eventClass, 'features' => $event_features]);
}
public function list($event_id)
{
if (!Auth::check()) return redirect('/login');
$event_features = DB::table('event_features')->where('event_id', $event_id)->orderBy('id')->get();
return view('pages.event', ['event_features' => $event_features]);
}
}
1条答案
按热度按时间g6ll5ycj1#
当您要撷取单一项目时,请使用
find($id)
或first()
来撷取模型的执行严修。当您呼叫get()
时,会取得数组的集合,其中包含执行严修。当使用
DB::table('events')
时,您不会得到模型的示例,而是得到一个通用对象示例=〉您不能使用Model类定义的方法,如关系等。请直接使用模型,而不是Event::where(...
将方法更改为