2017-10-10 8 views
0

私はタグシステムを構築しようとしています。 私のデータベースには、テーブルtopicsとカラムtagsがあります。タグはJSONオブジェクトです。質問の価値のためのjsonのLaravelの検索

マイルート:

Route::get('t/{tag}', '[email protected]')->name('tag'); 

public function tag($tag) 
{ 
    return view('tags.tag', ['tag' => $tag, 'topics' => DB::table('topics')->get()]); 
} 

そして:

@foreach ($topics as $topic) 
    @if (in_array($tag, json_decode($topic->tags, true))) 
    <tr> 
     <td class="col-md-6 col-sm-6"> 
      <a href="#" title=""> 
       <strong>{{ $topic->topic_name }}</strong> 
      </a>  
     </td> 
     <td class="col-md-1 col-sm-1 text-right"> 
      @foreach (json_decode($topic->tags) as $tag) 
       <span class="badge badge-primary">{{ $tag }}</span> 
      @endforeach 
     </td> 
    </tr> 
    @endif 
@endforeach 

私は、これは完璧なソリューションではありません知っていると私は、クエリであればそれを使用する必要があります。これどうやってするの?前もって感謝します。 P.S私は知っている ' - > where(' topics-> tags '、' .. ')

しかし私のMySQLは5.7より古いので、これらの新しい機能を使用することはできません。助言がありますか?

+0

を参照してくださいDB

から取り出すときには、配列にJSONに変換されます、あなたのモデルに

protected $casts = [ 'tags' => 'array', ]; 

をキャストを使用してください? – ggdx

+0

..または最善の方法は、mysqlを更新することです? – DisplayName

答えて

関連する問題