2014-01-05 2 views
1

MySQL таблицы: сообщений теги post_tag (с колоннами POST_ID и tag_id)Многие-ко-многим (belongsToMany) Laravel отношение, кажется, не работает под HHVM

// Post.php model 
class Post extends Eloquent { 
    protected $table = 'posts'; 
    public $timestamps = true; 

    protected $guarded = ['id']; 

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

// Tag.php model 
class Tag extends Eloquent { 
    protected $table = 'tags'; 
    public $timestamps = false; 

    protected $guarded = ['id']; 

    public function posts() 
    { 
     return $this->belongsToMany('Post'); 
    } 
} 

// on routes.php 
Route::get('/', function() 
{ 
    $post = Post::find(44); 
    echo $post . '<br>'; 

    $tag = Tag::find(28); 
    echo $tag; 

    return $post->tags; 
}); 

при ударе/она печатает пост : 44, он печатает метки: 28 и дает

ErrorException Невозможно использовать скалярное значение как массив

при доступе к свойству тегов, которое находится в функции Post.php tags(). неважно, что в таблице post_tag есть запись с post_id = 44 и tag_id = 28, но она может быть пустой. Laravel/php дает мне эту ошибку при попытке доступа к методу ownToMany ('Tag').

что я делаю неправильно?

+0

Я дальше исследуете проблему в коде фреймворка обнаружил, что если я вместо того, чтобы сразу же отношение, как это, она работает: функция теги общественной() \t { \t \t возвращение $ this-> belongsToMany ('Tag', NULL, NULL, NULL, «что-нибудь-в-здесь-не-нуль «); \t} – mwm

+0

Эй, HHVM готов к прайм-тайм еще? –

ответ

0

Я считаю, что вам нужно использовать жадную загрузку:

$post = Post::with('tag')->find(28); 

Я не имеет установки Laravel передо мной, чтобы проверить. Так find не может быть в цепочке, так что вам может понадобиться, чтобы сделать это:

$post = Post::with(array('tag' => function($query) 
{ 
    $query->where('id', '=', 44); 
}))->get(); 
+0

Это была проблема HHVM. в Ларавеле это много-ко многим. должен работать из коробки. Я забыл, что использовал hhvm, а не php. это случается, чтобы не работать со всем, как сейчас. – mwm

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

  • Нет связанных вопросов^_^