2015-11-29 6 views
0

Ошибка, которую я получаю, - это «Вызов неопределенной функции App \ принадлежитToMany».Звонок на неопределенную функцию App принадлежитToMany [Laravel]

Это одна из двух моделей, которые используются для связи:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Review extends Model 
{ 
protected $table = "reviews"; 

protected $fillable = [ 'user_id','email','review']; 

public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

public function votes() 
{ 
    return $this->belongsToMany('App\User')->withPivot('vote')->withTimestamps(); 
} 

public function categories() 
{ 
    return $this-belongsToMany('Category','category_review','review_id','category_id')->withTimestamps(); 
} 

public function tags() 
{ 
    return $this->belongsToMany('App\Tag')->withTimestamps(); 
} 

}

Моя другая модель:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 
public function reviews() 
{ 
    return $this->belongsToMany('App\Review','category_review','category_id','review_id')->withTimestamps(); 
} 

public function children() 
{ 
    return $this->hasMany('App\Category','parent_id'); 
} 

public function parent() 
{ 
    return $this->belongsTo('App\Category','parent_id'); 
} 

}

Проблема заключается в том, я могу запустить App \ Category :: find (1) -> обзоры; но я не могу запустить App \ Review :: find (1) -> категории; В нем говорится: «Призыв к неопределенной функции App \ BelongsToMany»

ответ

0

У вас есть две ошибки в вашем методе categories().

public function categories() 
{ 
    return $this-belongsToMany('Category','category_review','review_id','category_id')->withTimestamps(); 
} 

Первая ошибка - стрелка. Вы ставите $this-belongsToMany, но это должно быть $this->belongsToMany.

Вторая ошибка - это пространство имен. Он должен быть App\Category.

Все вместе, метод должен быть:

public function categories() 
{ 
    return $this->belongsToMany('App\Category','category_review','review_id','category_id')->withTimestamps(); 
} 
+0

Вау, Lost 1 день в этой стрелкой :) получил это работает в настоящее время. Btw У меня есть один вопрос, что такое метод index() для миграции? – Nisthar

+0

Он добавляет базовый индекс. Существует поток stackoverflow, который отвечает как работают индексы: http://stackoverflow.com/questions/3567981/how-do-mysql-indexes-work –

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