Return 模型创建时 laravel
Return model with laravel when it was created
我需要将另存为 json 的新模型发送到前面,但我在响应中看不到列 organizationid
这是我的模型
class Organization extends Model
{
protected $table = "core.organizations";
protected $fillable = ['description'];
public $primaryKey = "organizationid";
public $incrementing = false;
public $timestamps = false;
}
这是我的职能
public function saveOrganization(Request $request)
{
try {
$description = $request->input('description');
$organization = new Organization();
$organization->description = $description;
$organization->save();
if (!$organization) {
throw new \Exception("No se guardo la organizacion");
}
return response()->json([
'organization' => $organization,
], 200);
} catch (\Exception $ex) {
return response()->json([
'error' => 'Ha ocurrido un error al intentar guardar la organización',
], 200);
}
}
这是回应
{"organization":{"description":"Restobar"}}
我该怎么办?
谢谢!!
$savedOrganization = Organization::create(
[
'description' => $description
]
);
return response()->json([
'organization' => $savedOrganization,
], 200)
而且这段代码没用
if (!$organization) {
throw new \Exception("No se guardo la organizacion");
}
由于您创建了一个新对象,而不是从数据库中检索对象,因此它唯一知道的属性就是您设置的属性。
如果您想获取 table 上的其余字段,您需要在保存后重新检索该对象。
// create the new record.
// this instance will only know about the fields you set.
$organization = Organization::create([
'description' => $description,
]);
// re-retrieve the instance to get all of the fields in the table.
$organization = $organization->fresh();
我在 Laravel 7.x 上注意到的一些事情(对于以前的版本可能也是如此):
我尝试通过保存来处理新对象的创建和更新,如下所示:
public static function saveAnswers(\stdClass $answers) {
if($answers->id) {
$jsonObject = JsonObject::find($answers->id);
} else {
$jsonObject = new JsonObject();
}
$jsonObject->fill((array) $answers);
$jsonObject->user_id = Auth::user()->id;
return $jsonObject->save();
}
这导致 return-value 为布尔值(真)。我有点莫名其妙,因为我之前在其他端点上多次使用保存和返回成功。最后我发现返回 $jsonObject->save() 总是 returns 布尔值,但在保存 returns 变异对象后只返回 $jsonObject!所以基本上在单独的命令上保存和返回对象:
$jsonObject->save();
return $jsonObject;
不知道这是什么魔法,但在使用 C# 和 JAVA 项目后,我已经习惯了将方法传递给第一个变异 class 实例,最后 [=24] =] 实例被返回...可能是 PHP 处理这个工作流程有点不同。
我需要将另存为 json 的新模型发送到前面,但我在响应中看不到列 organizationid
这是我的模型
class Organization extends Model
{
protected $table = "core.organizations";
protected $fillable = ['description'];
public $primaryKey = "organizationid";
public $incrementing = false;
public $timestamps = false;
}
这是我的职能
public function saveOrganization(Request $request)
{
try {
$description = $request->input('description');
$organization = new Organization();
$organization->description = $description;
$organization->save();
if (!$organization) {
throw new \Exception("No se guardo la organizacion");
}
return response()->json([
'organization' => $organization,
], 200);
} catch (\Exception $ex) {
return response()->json([
'error' => 'Ha ocurrido un error al intentar guardar la organización',
], 200);
}
}
这是回应
{"organization":{"description":"Restobar"}}
我该怎么办?
谢谢!!
$savedOrganization = Organization::create(
[
'description' => $description
]
);
return response()->json([
'organization' => $savedOrganization,
], 200)
而且这段代码没用
if (!$organization) {
throw new \Exception("No se guardo la organizacion");
}
由于您创建了一个新对象,而不是从数据库中检索对象,因此它唯一知道的属性就是您设置的属性。
如果您想获取 table 上的其余字段,您需要在保存后重新检索该对象。
// create the new record.
// this instance will only know about the fields you set.
$organization = Organization::create([
'description' => $description,
]);
// re-retrieve the instance to get all of the fields in the table.
$organization = $organization->fresh();
我在 Laravel 7.x 上注意到的一些事情(对于以前的版本可能也是如此):
我尝试通过保存来处理新对象的创建和更新,如下所示:
public static function saveAnswers(\stdClass $answers) {
if($answers->id) {
$jsonObject = JsonObject::find($answers->id);
} else {
$jsonObject = new JsonObject();
}
$jsonObject->fill((array) $answers);
$jsonObject->user_id = Auth::user()->id;
return $jsonObject->save();
}
这导致 return-value 为布尔值(真)。我有点莫名其妙,因为我之前在其他端点上多次使用保存和返回成功。最后我发现返回 $jsonObject->save() 总是 returns 布尔值,但在保存 returns 变异对象后只返回 $jsonObject!所以基本上在单独的命令上保存和返回对象:
$jsonObject->save();
return $jsonObject;
不知道这是什么魔法,但在使用 C# 和 JAVA 项目后,我已经习惯了将方法传递给第一个变异 class 实例,最后 [=24] =] 实例被返回...可能是 PHP 处理这个工作流程有点不同。