为了使表单字段可以同时包含在更新表单 ( 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` = ?
这两个查询是相同的,但看起来我的查询有点小,所以我会使用那个查询。