【发布时间】:2019-04-29 17:35:10
【问题描述】:
我有这个型号UserSetting.php:
class UserSetting extends Model
{
protected $fillable = ['user_id', 'name', 'setting_value'];
public static function set($user_id, $name, $value)
{
if (!User::find($user_id)) {
return error('NoForeign_User');
}
self::updateOrCreate(
['user_id' => $user_id, 'name' => $name],
['setting_value' => $value]
);
}
}
我想在UserSettingController.php 中这样使用它:
public function user(Request $request)
{
Validator::make($request->all(), [
'user_id' => 'required|int',
'name' => 'required|string',
'setting_value' => 'required|string',
], $this->messages)->validate();
// HERE IS THE CALL
UserSetting::set($request->user_id, $request->name, $request->setting_value);
return saved();
}
我需要静态调用UserSetting,但不需要return:
return UserSetting::set(...)
但是当静态函数到达if(!User::find($user_id)) 时,它会继续并显示saved() 助手而不是return error('NoForeign_User')
如果我使用 return return UserSetting::set(...) 执行此操作,它会正确显示错误。
这是正确的吗?除了返回静态类之外,我还有其他选择吗?
编辑:
我的error() 函数是这样的:
function error($message, $code = 422)
{
$response = ['message' => $message];
if ($errors) {
$response += [
'errors' => $errors,
];
}
return response()->json([
'message' => $message,
], $code);
}
【问题讨论】: