使用 Laravel 集合 HTML 获取 json 数据到 textarea

Getting json data to textarea using Laravel Collection HTML

所以我正在使用 Forms & HTML 包,但在输出数据时遇到了一些困难。例如:

当我使用此代码时:

{!! Form::model($article) !!}
    {!! Form::textarea('categories', null) !!}
{!! Form::close() !!}

我想在这里实现的是列出与文章相关的所有类别。像这样:

<textarea name="categories">
    Cat1
    Cat2
    Cat5
</textarea>

但是,我不知道如何告诉表单只输出特定的列,所以 textarea 填充了 json 数据(包括所有行)。

我知道最好的解决方案是制作多重选择器,但在这种情况下 - 我必须使用 textarea。

试试这个:

{!! Form::textarea('categories', implode('\n', $article->categories()->select('colName')
         ->get()->pluck('colName')->all()) !!}

将 colName 替换为您想要的列的名称

为了使表单字段可以包含在更新表单 (Form::model) 和创建表单 (Form::open) 中,我做了如下操作:

{!! Form::textarea('categories', isset($article) ? implode(PHP_EOL, $article->categories()->pluck('name')->toArray()) : null)

我在那里所做的是首先检查 $article 是否存在。如果是,则表示我已经使用了 Form::model。当 $article 存在时,我检索类别列表作为数组并在 PHP_EOL ("\n").

中内爆

但如果没有$article,则表示该表单应该是创建表单,所以数据为空。

感谢 Paras,我想出了这个解决方案。但是即使我们的结果相同,对这些结果的查询也是不同的。

我的结果查询是:

select `display_name` from `categories` inner join `article_categories` on `categories`.`id` = `article_categories`.`category_id` where `article_categories`.`article_id` = ?

Paras的查询结果为:

select `display_name`, `article_categories`.`article_id` as `pivot_article_id`, `article_categories`.`category_id` as `pivot_category_id` from `categories` inner join `article_categories` on `categories`.`id` = `article_categories`.`category_id` where `article_categories`.`article_id` = ?

这两个查询是相同的,但看起来我的查询有点小,所以我会使用那个查询。