2016-08-10 3 views
1

Просматривая Laracasts Laravel 5 Tutorial, преподаватель ничего не говорит о дополнительной косой чертой перед ссылкой на пространство имен [принадлежит ToMany ('\ App \ Article')] в эпизоде ​​21: от многих до многих отношений. Какое может быть его значение?Laravel5: Что делает дополнительный слэш в свойстве ToMany (' App Article')?

Если удалить лишнюю \, я получаю сообщение об ошибке:

No query results for model [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'); 
    } 
} 

App/Tag.php

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Tag extends Model 
{ 

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

\ обозначает глобальное пространство имен. Посмотрите [здесь] (http://php.net/manual/en/language.namespaces.global.php) – Andrew

+2

Почему я должен использовать глобальное пространство имен для \ App \ Article, а не для App \ Tag или App \ User? Все они используют одно и то же пространство имен приложений. – anonym

ответ

2

Ответ на название y наш пост:

Как упоминается в комментариях, \ относится к глобальному пространству имен. Не пространство имен приложений.

Вы также могли бы сделать

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

, если это более ясно. Это также даст возможность нажать на классе, чтобы перейти непосредственно к определению этого. (В большинстве интегрированной среды)

Ответ относительно ошибки вы получаете

No query results for model [App\Article].

Эта ошибка в основном создана если у вас есть что-то подобное в вашем контроллере:

$article = Article::findOrFail($id) 

Если статья не найдена, это исключает это исключение. Это означает, что в этом случае пропущенный $ id не существует.

Смежные вопросы