さて、私は少し固執しています。 プロジェクトにグループシステムを作成しました。私は何をしようとしていることでメンバーのための検索です 名前関係の雄弁な検索
GroupMember
- グループ
- グループ項目
- : グループシステムは、5つのモデルでありますユーザー名入力によるグループ。 しかし、私はGroupMemberモデルにuser_idを格納し、ユーザモデルに格納されているユーザ名は格納しません。私はUserモデルのグループとはまだ関係がありません。
何か関係がありますか? 私はMorph関係をまだ理解していない。
ここに、必要なモデルのグループの関係のリストがあります。
グループモデル
public function category() { return $this -> belongsTo('App\GroupCategory', 'category_id'); } public function owner() { return $this -> hasOne('App\GroupMember', 'group_id') -> where('owner', true); } public function mods() { return $this -> hasMany('App\GroupMember', 'group_id') -> where('mod', true); } public function members() { return $this -> hasMany('App\GroupMember', 'group_id'); } public function posts() { return $this -> hasMany('App\GroupPost', 'group_id'); } public function comments() { return $this -> hasMany('App\GroupPostComment', 'group_id'); }
GroupMemberモデル
public function groups() { return $this -> belongsToMany('App\Group'); } public function posts() { return $this -> hasMany('App\GroupPost'); } public function comments() { return $this -> hasMany('App\GroupPostComment'); } public function user() { return $this -> belongsTo('App\User'); }
ちょうどclearifyします。私は管理者が彼が探しているユーザー名の一部または文字を入力することができる入力フィールドを持っています。それはグループ内のメンバーだけを探すAJAX検索を行いますが、ユーザー名で表示されます。また、ユーザー名はGroupMemberモデルではなく、Userモデルにあります。
どうすればよいですか?
ありがとうございます。
編集:コントローラメソッド。
$group = Group::first(); return $group->members->user
ドンの `tは忘れて:検索し
use (namespace of group model)
:
$ yourSearchQuery
/** * @param Group $group * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * * Manage users */ public function getManageUsers(Group $group) { $group = $group -> with('members.user'); // Usernames can be "test0", "test1", "test2" // If i search "1" only "test1" should be in the result $yourSearchQuery = '1'; // The query $result = $group -> whereHas('members', function ($query) use ($yourSearchQuery) { $query -> whereHas('user', function ($query) use ($yourSearchQuery) { $query -> where('name', 'LIKE', '%'. $yourSearchQuery .'%'); }); }) -> get(); // Check the results manually // It still returns all members of the group dd($result); }
コントローラメソッドをajaxリクエストに表示できますか? – Adam
現時点では、単に検索が機能しているかどうかを確認するために、 'dd($ result)'を手動で検索します。 Odin Thunderが投稿したコードを試しました。 – Kaizokupuffball
ご覧のとおり、コントローラメソッドを追加しました。 – Kaizokupuffball