在我的应用程序中,我有事件和用户模型。因为事件模型我必须将它放入命名空间。所以我创建了名称空间,如下所示。
事件
<?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');
}
答案 0 :(得分:0)
如果您将Event
放在命名空间中,则需要将其与其完全限定的类名一起使用。
您可以将其导入控制器:
use App\Models\Event;
或者指定命名空间内联:
new App\Models\Event();
此外,如果您为模型创建名称空间,我建议您将其全部放在那里。 (User
在您的代码中遗漏了namespace