2020
2121namespace Zhiyi \Plus \API2 \Controllers \Feed ;
2222
23+ use Illuminate \Http \Request ;
2324use Illuminate \Http \Response ;
2425use Illuminate \Support \Carbon ;
2526use function Zhiyi \Plus \setting ;
3536use Zhiyi \Plus \Models \FeedTopicUserLink as FeedTopicUserLinkModel ;
3637use Zhiyi \Plus \API2 \Requests \Feed \CreateTopic as CreateTopicRequest ;
3738use Symfony \Component \HttpKernel \Exception \UnprocessableEntityHttpException ;
38- use Zhiyi \Plus \API2 \Resources \Feed \TopicCollection as TopicCollectionResource ;
3939
4040class Topic extends Controller
4141{
@@ -55,8 +55,9 @@ public function __construct()
5555 ->only (['create ' , 'update ' ]);
5656 }
5757
58- public function listTopicsOnlyHot (FeedTopicModel $ model ): JsonResponse
58+ public function listTopicsOnlyHot (Request $ request , FeedTopicModel $ model ): JsonResponse
5959 {
60+ $ user = $ request ->user ('api ' );
6061 $ topics = $ model
6162 ->query ()
6263 ->whereNotNull ('hot_at ' )
@@ -75,8 +76,14 @@ public function listTopicsOnlyHot(FeedTopicModel $model): JsonResponse
7576 ->all ()
7677 )->values ();
7778 }
79+ if ($ user ) {
80+ dd ($ user );
81+ $ result ->load (['users ' => function ($ query ) use ($ user ) {
82+ return $ query ->wherePivot ('user_id ' , $ user ->id );
83+ }]);
84+ }
7885
79- return ( new TopicCollectionResource ( $ topics ) )
86+ return TopicResource:: collection ( $ result )
8087 ->response ()
8188 ->setStatusCode (Response::HTTP_OK /* 200 */ );
8289 }
@@ -91,8 +98,9 @@ public function listTopicsOnlyHot(FeedTopicModel $model): JsonResponse
9198 public function index (IndexRequest $ request , FeedTopicModel $ model ): JsonResponse
9299 {
93100 if ($ request ->query ('only ' ) === 'hot ' ) {
94- return $ this ->listTopicsOnlyHot ($ model );
101+ return $ this ->listTopicsOnlyHot ($ request , $ model );
95102 }
103+ $ user = $ request ->user ('api ' );
96104
97105 // Get query data `id` order direction.
98106 // Value: `asc` or `desc`
@@ -124,15 +132,17 @@ public function index(IndexRequest $request, FeedTopicModel $model): JsonRespons
124132 // the `$direction` enum `asc` or `desc`.
125133 ->orderBy ('id ' , $ direction )
126134
127- // Set only query table column name.
128- ->select ('id ' , 'name ' , 'logo ' , Model::CREATED_AT )
129-
130135 // Run the SQL query, return a collection.
131136 // instanceof \Illuminate\Support\Collection
132137 ->get ();
138+ if ($ user ) {
139+ $ result ->load (['users ' => function ($ query ) use ($ user ) {
140+ return $ query ->wherePivot ('user_id ' , $ user ->id );
141+ }]);
142+ }
133143
134144 // Create the action response.
135- $ response = ( new TopicCollectionResource ( $ result) )
145+ $ response = TopicResource:: collection ( $ result )
136146 ->response ()
137147 ->setStatusCode (Response::HTTP_OK /* 200 */ );
138148
0 commit comments