【问题标题】:Error Exception: Indirect modification of overloaded property laravel错误异常:间接修改重载属性 laravel
【发布时间】:2018-09-20 18:56:29
【问题描述】:

我正在制作一个用于存储新版本应用程序的 API。这是我的代码:

  public function saveNewVersion() {
    $artifact_url = Input::get('url');
    $artifact_id = Input::get('id');
    $artifact_name = Input::get('name');
    $artifact_version = Input::get('version');

    $urls = explode('/', $artifact_url);

    //Exploding URL to dir
    $app_dir = "";

    for($i=5; $i<sizeof($urls); $i++)
        $app_dir .= $urls[$i] . '/';

    $app_dir .= $artifact_id;

    //Checking if the artifact_id exists in the database
    $app = Applications::where('app_dir', '=', $app_dir);

    if (!$app->count()) {
        //Save it as new application
        $new_app = new Applications();
        $new_app->application->name = $artifact_name;
        $new_app->app_dir = $app_dir;
        $new_app->save();

        $app_id = Applications::where('app_dir', '=', $app_dir)->first()->id;
    } else {
        $app_id = $app->first()->id;
        //Checking if the application name is not same as newrelic (Optional)
        if ($app->first()->application_name != $artifact_name) {
            $app = $app->first();
            $app->application_name = $artifact_name;
            $app->save();
        }
    }

    //check if the last version exists in the database
    $version = Versions::where('application_id', '=', $app_id)->orderBy('id', 'desc');
    $lastVersion = $version->first()->version_number;

    if ($lastVersion != $artifact_version) {
        //check if the new version is exists before
        $flag = 0;
        $versions = Versions::where('application_id', '=', $app_id)->orderBy('id', 'desc')->get();
        foreach ($versions as $item) {
            if ($item->version_number == $artifact_version) {
                $flag = 1;
                break;
            }
        }

        if (!$flag) {
            $version = new Versions();
            $version->application_id = $app_id;
            $version->version_number = $artifact_version;
            $version->save();

            echo 'Application' . $app_id . 'has been updated to version ' . $artifact_version;
        }
    }
}

当我使用 postman 调用 API 时,API 成功运行并存储了新版本的应用程序。但是当我使用 CURL 时。我得到了ErrorException: Indirect modification of overloaded property App\Applications::$application,它指向我的$new_app-&gt;save() 代码。

我的代码有问题吗?还是邮递员中使用了一些参数使这个错误不可见?

【问题讨论】:

    标签: laravel api postman


    【解决方案1】:

    我在这里可能是错的,但看起来问题就在这里:

    $new_app->application->name = $artifact_name;
    

    我认为应该是:

    $new_app->application_name = $artifact_name;
    

    基于其他代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      相关资源
      最近更新 更多