0

主題を適切に説明したことを願っています。各ユーザーが同じ連絡先テーブル内に独自の連絡先を持つ連絡先管理アプリケーションを作成しています。ユーザーは、互いの連絡先を表示できてはなりません。

私はこれを行うことから始めましたが、より良い方法があるはずです:

$contact = Contact::where('user_id', Auth::user()->id)->find($id);

上記の行の問題は、次のように書きたいということです。

$contact = Contact::find($id)

すべての検索が一致する必要があるように、おそらくフィルターのように where 句をロードする方法はありAuth::user()->idますか?

4

2 に答える 2

0

提案されているように、クエリ スコープを使用できます。Contactこれをモデルに追加します。

public function scopeOfUser($query, $user_id)
{
    return $query->where('user_id', '=', $user_id);
}

そして、次のように使用します$contacts = Contact::ofUser(Auth::user()->id)->get();

于 2014-06-06T09:50:30.620 に答える
0

laracasts.com で探していた答えを見つけました。(ビデオ: リポジトリの簡素化)

リポジトリを作成することで問題を解決しました。たとえば、私の ContactController では:

$contact = Contact::where('user_id', Auth::user()->id)->find($id);

今でしょ

$contact = $this->contact->getAll();

DbRepository ファイルには次のものがあります。

public function getAll() {
    return $this->model->where('user_id', Auth::user()->id)->get();
}

他にもたくさんの機能があり、ビデオを見てセットアップする必要があります。設定するのはより多くの作業ですが、すべてのテーブルに user_id フィールドがあるため、すべてのコントローラーで DbRepository を使用できます。

于 2014-06-14T14:57:40.590 に答える