Php 在我的laravel 4应用程序中设置的关系有问题
我在laravel 4应用程序中设置的关系有问题。我有两个表,事件和事件类型。我试图在事件显示和索引页面中访问事件类型的名称,但出现错误Php 在我的laravel 4应用程序中设置的关系有问题,php,laravel,laravel-4,relational-database,eloquent,Php,Laravel,Laravel 4,Relational Database,Eloquent,我在laravel 4应用程序中设置的关系有问题。我有两个表,事件和事件类型。我试图在事件显示和索引页面中访问事件类型的名称,但出现错误 Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$name 我的模特是 class Event extends Eloquent { /** * The database table used by the model. * * @var string */
Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$name
我的模特是
class Event extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'events';
public function eventtype() {
return $this->belongsTo('EventType');
}
}
class EventType extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'event_types';
public function events() {
return $this->hasMany('Event');
}
}
在我看来,我有
{{ $event->eventtype()->name }}
但这就是上面的错误
当我尝试使用
{{ $event->eventtype()->first()->name }}
或
我犯了一个错误
Trying to get property of non-object
是否需要访问中的EventTypeEventController@show或者,是否需要pivot表来实现在event show视图中访问事件类型名称?您可以尝试以下方法:
$event = Event::with('eventtype')->find(1);
$event->eventtype->name;
或者,对于多个事件:
$event = Event::with('eventtype')->get();
$event->first()->eventtype->name;
发现了问题。在我的事件表中,事件类型列名是event\u type\u id。我将其更改为eventtype\u id,它正在工作 首先检查相关模型是否存在并且仅在获取模型属性之后
@if ( $event->eventtype )
{{ $event->eventtype->name }}
@endif
当您将$event->eventtype()作为函数调用时,此函数不会为您提供模型,而是为您提供QueryBuilder,您可以将其用于:
$some_events = $event->eventtype()->whereType('some_type')->get();
它给你一个模型集合。要获取模型,请使用属性样式调用。祝你好运 我在我的事件显示方法中使用$event=event::with('eventtype')->find(1),在我的显示视图中使用$event->eventtype->name,但get试图获取非对象错误的属性。换句话说,当您使用此代码时:
$event->eventtype->name
larvel使用动态属性并在$event->eventtype()->first()中转换它->名称
automaticali。
$some_events = $event->eventtype()->whereType('some_type')->get();