0

我试图了解保存具有多个关系的模型的过程,但我仍然无法弄清楚如何以“犹太”的方式进行操作。

首先-我有一个属于类别(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 )会起作用,但我得到了一个Call to undefined method 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 和一些线程,但我仍然无法找出处理这个问题的最佳方法。

感谢您的回复!

4

1 回答 1

1

我实际上敢打赌,您的班级名称有冲突。Laravel 包含一个Event类,我想知道这是否不是您的代码中所调用的。作为一个快速测试,您可以重命名您的类FooEvent并查看它是否有效。

最好的解决方案可能是为您的模型命名空间(请参阅http://chrishayes.ca/blog/code/laravel-4-methods-staying-organized以获得快速介绍),以便您的模型仍然可以称为 Event 而不会与内置冲突班级。

于 2013-10-03T16:36:26.813 回答