2015-04-09 2 views
0

Я разрабатываю крошечное веб-приложение в свое свободное время, и теперь я хочу иметь шутки, которые могут быть полезны пользователю.Созвездие таблицы для любимой шутки

Мои таблицы:

---------------- 
| jokes  | 
---------------- 
| id 
| author_id 
| content 

---------------- 
| favorites | 
---------------- 
| id 
| joke_id 
| user_id 

(Конечно, есть несколько таблиц, как таблицы пользователей, но не являются необходимыми для этого)

Я не знаю, как установить отношения в моделях сейчас. Моя цель состоит в том, чтобы получить все шутки, которые были Избраные от зарегистрированного пользователя, например:

$favorites = Joke::wherePivot('user_id', Auth::user()->id)->get(); 

Так что я могу получить доступ к свойствам, как с шутками:

$jokes = Joke::all(); 

В лезвию шаблонизатор

@foreach($jokes as $joke) 
    {{ $joke->content }} 
@enndforeach 

Любые лучшие практики? Я запускаю версию Laravel Framework 4.2.17.

+0

я не знать y наша платформа, но у меня есть таблицы, подобные этому. Сначала я получаю 'joke_id', который связан с журналом' user_id' из таблицы 'избранное'. Затем я получаю 'любимые' детали, с' joke_id', я получил, из 'jokes' table –

+1

В чем вопрос? Поиск предложений и «лучших практик» - это не вопрос. – dimo414

+0

даже не шутка ... – 1010

ответ

0

Я хотел бы создать таблицу фаворитов, как следует:

joke_id | user_id

Поместите первичный ключ в оба поля. Если вы хотите сделать его «идеальным», поместите отдельный внешний ключ в отдельные поля, указывая соответственно на таблицы шуток и пользователя.

Каждый раз, когда вошедшие в избранное пользовательские шутки, храните joke_id и user_id.

индексирование

SELECT j.* 
FROM jokes j 
INNER JOIN favorites f ON j.id=f.joke_id 
WHERE f.user_id= $userId 

Использование Laravel Query Builder:

DB::table('jokes') 
      ->join('favorites', 'jokes.id', '=', 'favorites.joke_id') 
      ->where('favorites.user_id', '=', $userId) 
      ->get(); 
+0

Прохладный, спасибо за ваш ответ! Но как бы вы установили отношения в моделях? –

+0

Используете ли вы «Модели по умолчанию» Eloquent, поставляемые с Laravel? – stevenvanc

+0

Да, я делаю, например: > функция избранное() { > return $ this-> hasMany ('Favorit', 'favorites', 'user_id', 'joke_id'); >} –

0

U можно получить с помощью MySQL Query предположить, что идентификатор = u0001

SELECT j.id,j.author_id,j.Content,f.user_id 
FROM jokes j 
JOIN favorites f 
ON j.id=f.jokeid 
WHERE f.user_id='u0001' 
Смежные вопросы