如何从数据库动态返回API JSON并在Laravel 5.1中将JSON存储在MySQL中

时间:2015-08-27 18:11:31

标签: mysql json laravel-5.1

我目前正在为我的网站开发api以使用谷歌地图。我在社区的帮助下成功开发了api。但它只输出一页。我需要它是动态的,因为结果将基于用户的输入。现在我的控制器看起来像这样

 <?php

namespace App\Http\Controllers;

use App\Post;
use App\Http\Requests;

class ApiController extends Controller
{
    public function index() {
        $results = [];

        foreach (Post::all() as $post)
        {
            $results[] = [
                'id' => $post->id,
                'marketname' => $post->subtitle,
            ];
        }

        return ['results' => $results];
    }
}

但这不是动态的。

我在想复制我的搜索并修改它。看起来像这样

<?php

namespace App\Http\Controllers;

use App\Jobs\TagIndexData;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Post;
use App\Video;
use App\Tag;
use App\Http\Controllers\Controller;

class TagController extends Controller
{
    public function index(Request $request)
    {
        $query = $request->get('q');

        $posts = Post::where('title', 'LIKE', "%{$query}%")
                ->orwhere('subtitle', 'LIKE', "%{$query}%")->get();

        $videos = Video::where('title', 'LIKE', "%{$query}%")
            ->orwhere('subtitle', 'LIKE', "%{$query}%")->get();

            $tag = $request->get('tag');
            $data = $this->dispatch(new TagIndexData($tag));
            $layout = $tag ? Tag::layout($tag) : 'tags.layouts.index';

            return view($layout, $data)->withPosts($posts)->withVideos($videos);

    }
}

但我不明白如何在mysql中存储json,也不知道如何查询和输出它。任何帮助都将不胜感激。

要清楚我想要什么。我想要一个人输入他们的邮政编码或地址,然后返回一个谷歌地图,上面填充了指示附近事件的标记。

我正在尝试修改一个教程,我使用谷歌与谷歌混合的农贸市场api。部分javascript看起来像这样

 accessURL="http://search.ams.usda.gov/farmersmarkets/v1/data.svc/zipSearch?zip=" + userZip/address;

其中输入了userZip /地址,我想用它来填充谷歌地图

欢迎任何有关如何构建此建议的建议

1 个答案:

答案 0 :(得分:1)

从控制器返回JSON非常简单。只需返回集合:

public function index() {
    $posts = Post::all();
    return $posts;
}

或者,如果您只需要返回某些字段,请使用select()

public function index() {
    $posts = Post::select(['id', 'subtitle as marketname'])->get();
    return $posts;
}