質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

4回答

2793閲覧

laravelで指定したカラムだけ返却するjsonレスポンスを作成するメソッド

renren643

総合スコア279

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/10/24 02:00

編集2019/10/24 02:14

laravelでAPI作成のレスポンスを作成したいのですが、デフォルトでは、jsonレスポンスに全てのカラムが入ってきます。

$companies = Company::all(); return $companies;
[ { "id": 1, "name": "A株式会社", "stuff_name": "AAA" }, { "id": 2, "name": "B株式会社", "stuff_name": "BBB" }, { "id": 3, "name": "C株式会社", "stuff_name": "CCC" }, { "id": 4, "name": "D株式会社", "stuff_name": "DDD" } ]

これを、以下のような感じで、「stuff_name」抜きで表示したいのですがいいメソッドはあるでしょうか?

[ { "id": 1, "name": "A株式会社", }, { "id": 2, "name": "B株式会社", }, { "id": 3, "name": "C株式会社", }, { "id": 4, "name": "D株式会社", } ]

もちろん、forを回して、unsetとかしたらできないことないんですが、なんかいいメソッッドがありそうな気がして。

ちなみに、pluckをやってみましたが,keyを取得できなくなったんで、やめました。
お分かりでしたら回答お願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/10/24 02:03 編集

stuff_nameとstuff_departmentの違いはなんでしょう? stuff_departmentも抜くのでしょうか? 処理はPHP側でよいのですよね?
renren643

2019/10/24 02:13

間違えました。修正します >処理はPHP側でよいのですよね? はい
guest

回答4

0

Laravel的には
Modelに

protected $hidden = ['stuff_name'];

と、隠したいフィールドを列挙しておく事で、toArray/toJsonされる時に
列挙したフィールドを取り除いてくれる。
デフォルトで用意されているUserモデルもパスワードやリメンバートークンをこの方法で隠している

投稿2019/10/24 05:17

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/10/24 05:54

そういえば、この手があった・・・
guest

0

ベストアンサー

php

1$companies = Company::query()->select('id', 'name')->get(); 2return $companies;

「stuff_name以外」は指示できるのでしょうか?

動作未検証ですが。

php

1$companies = Company::all()->map(function ($item, $key){ 2 return $item->pull('stuff_name'); 3}); 4return $companies;

https://readouble.com/laravel/6.0/ja/collections.html#method-map
https://readouble.com/laravel/6.0/ja/collections.html#method-pull

投稿2019/10/24 04:58

編集2019/10/24 05:33
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/10/24 05:12

ちなみに命題のような「stuff_name以外」は指示できるのでしょうか?
guest

0

この場合はselect()だけで済みそう。

もっと複雑な場合はAPIリソース。
https://readouble.com/laravel/6.0/ja/eloquent-resources.html

Laravelなら大抵のことは用意されてる。

投稿2019/10/24 02:26

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP

1$json=<<<eof 2[ 3 { 4 "id": 1, 5 "name": "A株式会社", 6 "stuff_name": "AAA" 7 }, 8 { 9 "id": 2, 10 "name": "B株式会社", 11 "stuff_department": "BBB" 12 }, 13 { 14 "id": 3, 15 "name": "C株式会社", 16 "stuff_department": "CCC" 17 }, 18 { 19 "id": 4, 20 "name": "D株式会社", 21 "stuff_department": "DDD" 22 } 23] 24eof; 25$data=json_decode($json,true); 26$data=array_map(function($x){ 27 return array_filter($x,function($y){ 28 return !preg_match("/^stuff_/",$y); 29 },ARRAY_FILTER_USE_KEY); 30},$data); 31print_r($data);

調整

stuff_departmentをやめてstuff_nameに統一するということなので以下

PHP

1<?PHP 2$json=<<<eof 3[ 4 { 5 "id": 1, 6 "name": "A株式会社", 7 "stuff_name": "AAA" 8 }, 9 { 10 "id": 2, 11 "name": "B株式会社", 12 "stuff_name": "BBB" 13 }, 14 { 15 "id": 3, 16 "name": "C株式会社", 17 "stuff_name": "CCC" 18 }, 19 { 20 "id": 4, 21 "name": "D株式会社", 22 "stuff_name": "DDD" 23 } 24] 25eof; 26$data=json_decode($json,true); 27$data=array_map(function($x){ 28 return array_filter($x,function($y){ 29 return $y!=="stuff_name"; 30 },ARRAY_FILTER_USE_KEY); 31},$data); 32print_r($data);

投稿2019/10/24 02:12

編集2019/10/24 02:19
yambejp

総合スコア114742

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問