Laravel默认值上的可选列


Laravel optional columns on default values

我的响应表中的group列的默认值为"city"。我下面的代码会进行查找以查看默认值是否应该输入...或其他一些值;

$group = Group::where('token', $request->input('groupToken'))->first();
$group = ($group ? $group->value : 'city');
$response = Response::create([
    'token' => $token,
    'group' => $group,
]);

理想情况下,我想摆脱这条$group = ($group ? $group->value : 'city');行,如果Group::where返回 null,则不要$group传递给 create() 方法。

这是怎么做到的?

试试这个:

$group = Group::where('token', $request->input('groupToken'))->first();
$data['token'] = $token;
if($group != null){
    $data['group'] = $group->value;
}
$response = Response::create($data);
您可以使用

firstOrFail()并将其包装在try-catch中,而不是->first(),如果没有返回,那么它将抛出一个ModelNotFoundException

类似的东西(未经测试):

$data['token'] = $token;
try {
    $group = Group::where('token', $request->input('groupToken'))->firstOrFail();
    $data['group'] = $group;
} catch (ModelNotFoundException $ex) {
    // Handle exception
}
$response = Response::create(
    $data
);