Laravel4-使用多个关系/外键保存模型

Laravel4-使用多个关系/外键保存模型,laravel,laravel-4,Laravel,Laravel 4,我试图理解保存具有多个关系的模型的过程,但我仍然不知道如何以“犹太”的方式进行保存 首先-我有一个属于一个类别(Eventcat)和一个位置的事件模型: // Event.php class Event extends Eloquent { protected $table = 'events'; public function location() { return $this->belongsTo('Location'); } public function event

我试图理解保存具有多个关系的模型的过程,但我仍然不知道如何以“犹太”的方式进行保存

首先-我有一个属于一个类别(Eventcat)和一个位置的事件模型:

// Event.php

class Event extends Eloquent {

protected $table = 'events';

public function location()
{
    return $this->belongsTo('Location');
}

public function eventcat()
{
    return $this->belongsTo('Eventcat');
}

public function users()
{
    return $this->belongsToMany('User');
}

}

// Location.php

class Location extends Eloquent
{

protected $table = 'locations';

public function events()
{
    return $this->hasMany('Event');
}

}

// Eventcat.php

class Eventcat extends Eloquent
{
protected $table = 'eventcats';

public function events()
{
    return $this->hasMany('Event');
}
}
我已经在数据库中添加了一些类别和位置,现在我正在尝试保存事件。我以为
$event->eventcat()->associate($eventcat)
可以工作,但我得到了对未定义方法eventcat()的
调用

public function postCreateEvent() {

    $event = new Event();

    $eventcat = Eventcat::find( Input::get('event-create-eventcat[]') );
    $location = Location::find( Input::get('event-create-location[]') );

    $event->title = Input::get('event-create-title');
    $event->description = Input::get('event-create-description');
    $event->price = Input::get('event-create-price');
    $event->start_date = Input::get('event-create-start_date');
    $event->end_date = Input::get('event-create-end_date');

    $event->eventcat()->associate( $eventcat );
    $event->location()->associate( $location );

    $event->save();

}
我已经阅读了这里的文档、API和一些线程,但我仍然无法找到处理这个问题的最佳方法


谢谢回复

我敢打赌你的类名中有冲突。Laravel包含一个
事件
类,我想知道您的代码中是否调用了这个类。作为一个快速测试,您可以重命名类
FooEvent
,看看它是否有效


最好的解决方案可能是给您的模型命名(请参阅快速介绍),这样您的模型仍然可以被称为事件,而不会与内置类发生冲突

是的,这就是问题所在。事实上,我也想到了同样的答案,回到这里与大家分享并看到了你的答案:)非常感谢!