2

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

当我使用此代码时:

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

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

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

但是,我不知道如何告诉表单只输出一个特定的列,所以会发生什么是textarea用 json 数据填充(包括所有行)。

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

4

2 回答 2

1

尝试这个:

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

将 colName 替换为所需列的名称

于 2017-01-18T12:26:12.830 回答
1

为了使表单字段可以同时包含在更新表单 ( 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` = ?

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

于 2017-01-18T12:52:53.547 回答