Laravel&Typeahead.js:检索类别名称,但将其ID提交给数据库?

哈尔内克斯

我设法将Typeahead.js与laravel应用程序集成。但不幸的是,我需要提交ID而不是name我需要使用Typeahead检索类别的名称,但将其ID插入数据库中,因为这就是我引用它的方式。

到目前为止,我收到一个sql错误,因为它期望一个整数,但是却得到一个字符串(类别名称)。

我尝试做一个foreach并分配给它$result->id$data[]但是那根本不起作用。

我该如何解决?

getSubreddits 方法中 PostsController

public function getSubreddits($query) {
        $results = Subreddit::select('name')->where('name', 'LIKE', '%' . $query . '%')->get();
        return Response::json($results);
    }

JS

<script type="text/javascript">
        $(document).ready(function() {
            var subreddits = new Bloodhound({
                datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                prefetch: 'http://localhost/reddit/public/data/subreddits',
                remote: {
                    url: 'http://localhost/reddit/public/data/subreddits/%QUERY',
                    wildcard: '%QUERY'
                }
            });

            $('#remote .typeahead').typeahead(null, {
                name: 'name',
                display: 'name',
                source: subreddits
            });
        });
</script>

路线

Route::get('data/subreddits', 'PostsController@getSubreddits');
Route::get('data/subreddits/{QUERY}', 'PostsController@getSubreddits');

整个store()方法PostsController.php

public function store(PostRequest $request)
    {
        if (Input::has('link')) {
            $input['link'] = Input::get('link');
            $info = Embed::create($input['link']);

            if ($info->image == null) {
                $embed_data = ['text' => $info->description];
            } else if ($info->description == null) {
                $embed_data = ['text' => ''];
            } else {
                $extension = pathinfo($info->image, PATHINFO_EXTENSION);

                $newName = public_path() . '/images/' . str_random(8) . ".{$extension}";

                if (File::exists($newName)) {
                    $imageToken = substr(sha1(mt_rand()), 0, 5);
                    $newName = public_path() . '/images/' . str_random(8) . '-' . $imageToken . ".{$extension}";
                }

                $image = Image::make($info->image)->fit(70, 70)->save($newName);
                $embed_data = ['text' => $info->description, 'image' => basename($newName)];
            }

            Auth::user()->posts()->create(array_merge($request->all(), $embed_data));

            return redirect('/articles');
        }
        Auth::user()->posts()->create($request->all());

        return redirect('/');
}

和形式

{!! Form::open(['url' => 'posts', 'method' => 'POST']) !!}
      <p>
         {!! Form::label('title', 'Title:') !!}
         {!! Form::text('title', null, ['class' => 'form-control', 'id' => 'title']) !!}
      </p>

      <p>
         {!! Form::label('link', 'Link:') !!}
         {!! Form::text('link', null, ['class' => 'form-control', 'id' => 'link']) !!}
      </p>

       <p>
          <div id="remote">
           <input class="form-control typeahead" type="text" placeholder="Choose a Subreddit" name="subreddit_id">
          </div>
       </p>

        <p>
           {!! Form::submit('Submit Post', ['id' => 'submit', 'class' => 'btn btn-primary']) !!}
         </p>

{!! Form::close() !!}
哈尔内克斯

我知道了

<div id="remote">
    <input class="form-control typeahead" type="text" placeholder="Choose a Subreddit" name="subreddit_name">
    <input type="hidden" id="subreddit_id" name="subreddit_id" value="">  
</div>
...
$('#remote .typeahead').bind('typeahead:select', function(ev, suggestion) {
            $('#subreddit_id').val(suggestion.id);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel 5.1和Typeahead.js

来自分类Dev

如何使用Laravel检索JSON数据并将其存储到数据库中

来自分类Dev

从Laravel中的数据库检索对象

来自分类Dev

从Laravel中的数据库检索对象

来自分类Dev

使用laravel从数据库中检索数据

来自分类Dev

Laravel 5.5 和 vue-typeahead - 防止在 onHit 方法中自动提交表单

来自分类Dev

laravel 5简单的ajax从数据库检索记录

来自分类Dev

如何在laravel 5.1中从数据库检索图像?

来自分类Dev

在Laravel中使用find()检索数据库对象

来自分类Dev

Laravel:从数据库中检索唯一记录

来自分类Dev

放置和检索脚本/变量 Laravel 数据库

来自分类Dev

上传CSV文件并使用Laravel将其导入数据库

来自分类Dev

上传CSV文件并使用Laravel将其导入数据库

来自分类Dev

LARAVEL-提交表单时未更新数据库

来自分类Dev

Laravel 5.5 在提交时重复插入到数据库

来自分类Dev

春季交易中数据未提交给数据库

来自分类Dev

在Laravel / Homestead中更改数据库名称

来自分类Dev

从Laravel中的数据库获取图像名称

来自分类Dev

Laravel数据库连接:在蛇形情况下从数据库名称中选择

来自分类Dev

Laravel数据库连接:在蛇形情况下从数据库名称中选择

来自分类Dev

使用mysql数据库中的类别名称填充选择下拉菜单

来自分类Dev

Laravel-4如何使用ID值和名称值填充数据库中的选择框

来自分类Dev

Laravel-5如何使用ID值和名称值填充数据库中的选择框

来自分类Dev

使用typeahead.js从json数据中检索多个值

来自分类Dev

使用typeahead.js从json数据中检索多个值

来自分类Dev

Algolia Typeahead检索结果

来自分类Dev

从Laravel上的数据库中检索所有父/子记录(分层数据)

来自分类Dev

如何将搜索表单连接到数据库并在 Laravel 上检索数据

来自分类Dev

Laravel。如何获取数据库通知的ID?

Related 相关文章

  1. 1

    Laravel 5.1和Typeahead.js

  2. 2

    如何使用Laravel检索JSON数据并将其存储到数据库中

  3. 3

    从Laravel中的数据库检索对象

  4. 4

    从Laravel中的数据库检索对象

  5. 5

    使用laravel从数据库中检索数据

  6. 6

    Laravel 5.5 和 vue-typeahead - 防止在 onHit 方法中自动提交表单

  7. 7

    laravel 5简单的ajax从数据库检索记录

  8. 8

    如何在laravel 5.1中从数据库检索图像?

  9. 9

    在Laravel中使用find()检索数据库对象

  10. 10

    Laravel:从数据库中检索唯一记录

  11. 11

    放置和检索脚本/变量 Laravel 数据库

  12. 12

    上传CSV文件并使用Laravel将其导入数据库

  13. 13

    上传CSV文件并使用Laravel将其导入数据库

  14. 14

    LARAVEL-提交表单时未更新数据库

  15. 15

    Laravel 5.5 在提交时重复插入到数据库

  16. 16

    春季交易中数据未提交给数据库

  17. 17

    在Laravel / Homestead中更改数据库名称

  18. 18

    从Laravel中的数据库获取图像名称

  19. 19

    Laravel数据库连接:在蛇形情况下从数据库名称中选择

  20. 20

    Laravel数据库连接:在蛇形情况下从数据库名称中选择

  21. 21

    使用mysql数据库中的类别名称填充选择下拉菜单

  22. 22

    Laravel-4如何使用ID值和名称值填充数据库中的选择框

  23. 23

    Laravel-5如何使用ID值和名称值填充数据库中的选择框

  24. 24

    使用typeahead.js从json数据中检索多个值

  25. 25

    使用typeahead.js从json数据中检索多个值

  26. 26

    Algolia Typeahead检索结果

  27. 27

    从Laravel上的数据库中检索所有父/子记录(分层数据)

  28. 28

    如何将搜索表单连接到数据库并在 Laravel 上检索数据

  29. 29

    Laravel。如何获取数据库通知的ID?

热门标签

归档