请求属性更改时创建 Post 的优雅解决方案
Elegant solution to create a Post when request attributes change
我想知道如何以最好的方式实现它:
我有一个网站,用户可以在其中制作 post,他有 2 个复选框用于“简历”和“更多文档”。这两个不是必需的,但是当它们是必需的时,我需要为此在列的数据库中保存一个“true”。
我想我可以通过编写 if 循环来实现它,比如:
如果两者都存在,则此代码:
Post::create([ 'resumee' => true, 'more_docs' => true,]);
如果只有这样的简历:
Post::create(['resumee' => true, 'more_docs' => false]);
如果只有 more_docs 存在,则相反。
不过我认为会有更好的方法来实现它,但我对 laravel 还很陌生,所以我想不出任何办法。
我的第一个猜测是在 create
语句中做这样的事情:
Post::create([
'resumee' => true,
if($request->has(more_docs)
'more_docs' => true,
else ....
]);
但我得到的只是红线哈哈。所以也许你们中更有经验的人有一个想法,任何帮助表示赞赏!
你可以这样使用:
Product::create([
// ... other fields
'resumee' => $request->filled('resumee'),
'more_docs' => $request->filled('more_docs'),
]);
如果您想确定某个值是否出现在请求中并且不为空,您可以使用 filled 方法。我认为这个方法更适合你的任务。
我想知道如何以最好的方式实现它:
我有一个网站,用户可以在其中制作 post,他有 2 个复选框用于“简历”和“更多文档”。这两个不是必需的,但是当它们是必需的时,我需要为此在列的数据库中保存一个“true”。
我想我可以通过编写 if 循环来实现它,比如:
如果两者都存在,则此代码:
Post::create([ 'resumee' => true, 'more_docs' => true,]);
如果只有这样的简历:
Post::create(['resumee' => true, 'more_docs' => false]);
如果只有 more_docs 存在,则相反。
不过我认为会有更好的方法来实现它,但我对 laravel 还很陌生,所以我想不出任何办法。
我的第一个猜测是在 create
语句中做这样的事情:
Post::create([
'resumee' => true,
if($request->has(more_docs)
'more_docs' => true,
else ....
]);
但我得到的只是红线哈哈。所以也许你们中更有经验的人有一个想法,任何帮助表示赞赏!
你可以这样使用:
Product::create([
// ... other fields
'resumee' => $request->filled('resumee'),
'more_docs' => $request->filled('more_docs'),
]);
如果您想确定某个值是否出现在请求中并且不为空,您可以使用 filled 方法。我认为这个方法更适合你的任务。