2

在我的应用程序中,我有 Event 和 User 模型。由于 Event 模型,我必须将其放入命名空间。所以我创建了如下命名空间。

事件

<?php namespace App\Models;

class Event extends \Eloquent {
   public function user()
   {
     return $this->belongsTo('User');
   }

用户

<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
use App\Models\Event;

class User extends Eloquent implements UserInterface, RemindableInterface {
   public function events()
   {
     return $this->hasMany('Event');
   }

User 和 Event 之间的关系是简单的 OneToMany。所以在我的EventController中,我使用 POST 方法来创建新的事件资源。

$e = new Event(array('keys'=>'values')); //without user_id filled
$user->events()->save($e);

同时我得到一个错误。

Call to undefined method Illuminate\Support\Facades\Event::newQuery()

如果我没记错的话,我猜这是命名空间错误。但我猜命名空间已经正确声明了。但我尝试访问类似的问题并在关系中使用替代方式,然后效果很好。我个人觉得不满意。知道为什么会发生这种情况吗?
将上述关系更改为

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

1 回答 1

0

如果您放入Event命名空间中,则需要将其与完全限定的类名一起使用。

您可以将其导入控制器:

use App\Models\Event;

或者指定命名空间内联:

new App\Models\Event();

另外,我建议如果您为模型创建命名空间,则将所有模型都放在那里。(在您的代码User中缺少 a )namespace

于 2015-01-02T08:50:11.663 回答