Php 在我的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 */

我在laravel 4应用程序中设置的关系有问题。我有两个表,事件和事件类型。我试图在事件显示和索引页面中访问事件类型的名称,但出现错误

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();