このコードを使用して、laravelの雄弁なクエリービルダーのwithCountメソッドでwhere句を実行しようとしています。Laravel withCountメソッドのwhere節を使用
$posts = Post::withCount('upvotes')->where('upvotes_count', '>', 5)->get();
このコードは私にこのエラーを与えています。
SQLSTATE [42S22]:見つからないカラム:1054不明な列 'upvotes_count' 'where句'(SQLで:を選択し、(SELECT COUNT()
upvotes
upvotes
からupvoteable_id
=posts
id
とupvotes
。posts
どこupvotes_count
> 5からupvotes_count
など。upvoteable_type
=のApp \ポスト))
だから私は推測することができるものから、私は目を実行した場合upvotes_countが選択されていないので、列が発見されていないが、それでありますコードの一部です。
$posts = Post::withCount('upvotes')->get();
次に、私はこの出力を得ています。
{
"id": 1,
"user_id": 15,
"title": "Voluptatum voluptas sint delectus unde amet quis.",
"created_at": "2016-10-07 13:47:48",
"updated_at": "2016-10-07 13:47:48",
"upvotes_count": 7
},
{
"id": 2,
"user_id": 2,
"title": "Molestiae in labore qui atque.",
"created_at": "2016-10-07 13:47:48",
"updated_at": "2016-10-07 13:47:48",
"upvotes_count": 2
},
これは基本的にupvotes_countが選択されていることを意味します。したがって、この問題を解決する方法については本当に混乱しています。
(私はこれまで試みその他のオプションは、それに関連するそれぞれのエラーと以下の通りである。)
$posts = Post::where('id', $id)->withCount(['upvotes' => function($query) {
$query->where('upvotes_count', '>', 5);
}])->get();
エラー。
SQLSTATE [42S22]:列が見つかりません:1247リファレンス 'upvotes_count' サポートされていません(項目リストで前方参照)(SQLは:。(、
upvotes
upvotes
upvoteable_id
=posts
から選択数()を選択します。upvotes_count
としてid
とupvotes
。upvoteable_type
=のApp \ポストと> 5upvotes_count
)id
= 1)
コードposts
から。
$posts = Post::where('id', $id)->with(['upvotes' => function($query) {
$query->select('upvoteable_id AS upvotes_count');
}])->where('upvotes_count', '>', 5)->get();
と
$posts = \App\Post::where('id', $id)->with(['upvotes' => function($query) {
$query->selectRaw('upvoteable_id AS upvotes_count');
}])->where('upvotes_count', '>', 5)->get();
エラー。
SQLSTATE [42S22]:見つからないカラム:1054不明な列 'upvotes_count 'where句' で:
(SQL *選択
posts
= 1 id
とupvotes_count
> 5から) 親モデルとの関係にあるcount()メソッドでwhere句を使いたいだけです。
はテーブル「upvotes_count」と呼ばれる何の列がありませんクエリビルダーのインスタンス – Drazxier
あなたの問題は1行で教えてください。 私はあなたがupvotesが数よりも少ない行を持って来るdbを求めるwhere句を作成しようとしていることがわかり、upvotes countと呼ばれる列はありません:D 今何が問題ですか? –
私はあなたとの会話が大好きで、SOのコメントはそれのための最良の場所ではないので、Facebookの会話を続けましょう。 – Drazxier