0 レビュー
2 回答
php-Laravel:複数のテーブルからデータをクエリする方法は?
データベースにはchars、tags、chars_tagsの3つのテーブルがあります
charsには次の列があります:
id | char_name
タグには次の列があります:
id | tag_name
chars_tagsには次の列があります:
id | char_id | tag_id
データを取得するために常に以下のコードを使用します。前回、charテーブルに「tag_id」という別の列があったため、「tag_id」列を削除して、「chars_tags」であるピボットテーブルに変更しました。>
$char = chars::where('id', '=', 1)
->with('tags:id,tag_name')
->get();
では、タグ付きの文字を今すぐ取得するにはどうすればよいですか?
わからない
0
レビュー
答え :
解決策:
まず、文字とタグの多対多の関係を使用してモデルを設定します
class Char extends Model
{
public function tags()
{
return $this->belongsToMany(Tag::class, 'chars_tags', 'char_id');
}
}
class Tag extends Model
{
public function chars()
{
return $this->belongsToMany(Char::class, 'chars_tags', 'tag_id');
}
}
これで、関連するタグに文字を熱心に読み込むことができます
$char = Char::with('tags')
->where('id', '=', 1)
->get();
または、単一のオブジェクトが必要な場合は、 find()
を使用できます
$char = Char::with('tags')->find(1);
わからない
0
レビュー
答え :
解決策:
SQL結合を使用することもできます: https://laravel.com/docs/5.6/queries#joins 1 < / p>
DB::table('chars')
->where('chars.id', 1)
->leftJoin('chars_tags', 'chars_tags.char_id', '=', 'chars.id')
->leftJoin('tags', 'tags.id', '=', 'chars_tags.tag_id')
->get();
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。