Laravel5:belongsToMany('\ App \ Article')中的额外斜杠是做什么的?

时间:2016-08-10 06:43:12

标签: php laravel namespaces laravel-5.2

在阅读Laracasts Laravel 5 Tutorial时,导师在第21集:多对多关系中的命名空间参考[belongsToMany('\ App \ Article')]之前没有提到额外的斜杠。它有什么意义?

如果我删除了额外的\,我收到错误:

  

模型[App \ Article]没有查询结果。

Article.php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;

class Article extends Model 
{
     public function tags()
     {
         return $this->belongsToMany('App\Tag');
     }
}

应用/ Tag.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model
{

    public function articles()
    {
        return $this->belongsToMany('\App\Article');
    }
}

1 个答案:

答案 0 :(得分:2)

关于帖子标题的回答:

如评论中所述,\指的是全局命名空间。不是App命名空间。

您也可以

public function articles()
    {
        return $this->belongsToMany(Article::class);
    }

如果你对此更清楚。这也有机会点击课程直接进入它的定义。(在大多数IDE中)

关于您收到的错误的答案

  

模型[App \ Article]没有查询结果。

如果您的控制器中有类似的内容,则主要会创建此错误:

$article = Article::findOrFail($id)

如果找不到该文章,它将抛出该异常。这意味着在这种情况下,传递的$ id不存在。