在创建时使用laravel返回模型

时间:2017-07-30 20:56:28

标签: php json laravel postgresql-9.4

我需要将保存为json的新模型发送到前面,但我无法看到列组织响应

这是我的模特

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"}}

我该怎么办?

谢谢!!

3 个答案:

答案 0 :(得分:8)

由于您已经创建了一个新对象,而没有从数据库中检索到一个对象,因此它所知道的唯一属性就是您设置的属性。

如果您想要获取桌面上的其他字段,则需要在保存后重新检索该对象。

// 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();

答案 1 :(得分:0)

elements

这段代码没用了

$savedOrganization = Organization::create(
    [
        'description' => $description
    ]
);

return response()->json([
        'organization' => $savedOrganization,
        ], 200)

答案 2 :(得分:0)

我在Laravel 7.x上注意到了一些东西(以前的版本也可能如此):

我尝试使用save处理创建和更新新对象的过程,如下所示:

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();
}

这导致返回值为布尔值(true)。我有点困惑,因为我之前曾经成功地多次使用保存和返回其他端点。最终,我发现返回$ jsonObject-> save()总是返回布尔值,但是仅返回$ jsonObject AFTER SAVING会返回突变的对象!因此,基本上在单独的命令上保存和返回对象:

$jsonObject->save();
return $jsonObject;

不知道这是什么鬼话,但是在使用C#和JAVA项目后,我习惯了使用管道方法来首先变异类实例,最后返回类实例……可能是PHP处理了这个问题工作流程略有不同。