在我的应用程序中,我有事件和用户模型。由于事件模型,我必须将它放入命名空间。所以我创建了命名空间,如下所示。
事件
<?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/