[解決済み】Laravel EloquentのWith()関数で特定のカラムを取得する。
2022-03-31 12:09:08
質問
2つのテーブルがあります。
User
と
Post
. 一つ
User
を多数持つことができます。
posts
と1つの
post
が1つだけ属している
user
.
私の
User
モデルには
hasMany
リレーションを...
public function post(){
return $this->hasmany('post');
}
そして、私の
post
モデルには
belongsTo
リレーションを...
public function user(){
return $this->belongsTo('user');
}
では、この2つのテーブルを
Eloquent with()
が、2番目のテーブルから特定のカラムが必要です。クエリビルダを使えばいいのは分かっているのですが、そうしたくありません。
において
Post
モデルで書くと...
public function getAllPosts() {
return Post::with('user')->get();
}
次のようなクエリを実行する...
select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
でも、私が欲しいのは...
select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)
使うときは...
Post::with('user')->get(array('columns'....));
最初のテーブルからカラムを返すだけです。特定のカラムが欲しい場合は
with()
を2番目のテーブルから取得します。どうすればいいのでしょうか?
どのように解決するのですか?
さて、解決策が見つかりました。それは
closure
関数を
with()
のように配列の2番目のインデックスとして使用します。
Post::query()
->with(['user' => function ($query) {
$query->select('id', 'username');
}])
->get()
のみが選択されます。
id
と
username
を別のテーブルから取得します。私はこれが他の人の助けになることを願っています。
を覚えておいてください。
主キー (この場合 id) は、最初のパラメーターを指定する必要があります。
の中にある
$query->select()
を使用すると、実際に必要な結果を取得できます。
関連
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み】未定義の関数mysql_query()をLoginで呼び出す【重複
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] Laravel Eloquentを使用して複数のWhere句クエリを作成する方法?
-
[解決済み] Laravel Eloquentを使って最後に挿入されたIDを取得する
-
[解決済み] Laravel Eloquent クエリ WHERE を OR AND OR で使用する?
-
[解決済み】laravel eloquentで特定の列を選択する方法
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】未定義のメソッド mysqli_stmt::get_result を呼び出す。
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。