php - 关系中的 Laravel 命名空间让我感到困惑

标签 php laravel-4 namespaces relationship laravel-facade

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

事件

<?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。所以在我的 事件 Controller 我使用 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');
    }

最佳答案

如果你把 Event在命名空间中,您需要将它与完全限定的类名一起使用。

您可以将其导入 Controller :

use App\Models\Event;

或者内联指定命名空间:
new App\Models\Event();

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

关于php - 关系中的 Laravel 命名空间让我感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27739356/

相关文章:

c++ - 在 C++ 中将静态类转为命名空间时如何处理私有(private)成员函数?

c++ - 为什么 c++ 的命名空间范围还包括文件范围(在 c 中)?

javascript - 使用命名空间/键搜索对象

php - 无法将默认用户角色分配给新用户

php - 可以想办法得到这个查询

php - 用户付款时显示字形或图像?

php - Laravel "artisan make:observer"失败

php - 从 Simplecart 数组创建 MySQL Insert 语句

php - 使用 Laravel 和 Eloquent 从表中全选

php - 如何为 Laravel/Eloquent 模型设置默认属性值?