【问题标题】:HasOneOrMany.php line 221 error in laravel when I try to upload an image当我尝试上传图片时,laravel 中的 HasOneOrMany.php 第 221 行错误
【发布时间】:2017-01-25 00:07:02
【问题描述】:

我正在做一个 laravel 项目,我想允许用户发布图片,但我收到了这个错误:

HasOneOrMany.php 第 221 行中的 FatalThrowableError:类型错误:参数 1 传递给 Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() 必须是 Illuminate\Database\Eloquent\Model 的实例,没有给出,调用 我的状态控制器。

这是我的状态控制器代码:

class StatusController extends Controller {
public function postStatus(Request $request){
    $this->validate($request, [
        'status' => 'required|max:250',
        ]);
        Auth::user()->statuses()->create([
            'body' => $request->input('status'),
            ]);

    if($request->hasFile('image')){
        $image = $request->file('image');
        $filename = Auth::user()->username . time() . "." . $image->getClientOriginalExtension();
        Image::make($image)->fit(300,300)
            ->save(public_path("/uploads/images/" . $filename ));


        $statuses = Auth::user()->statuses();
        $statuses->image = $filename;
        $statuses->save();
    }


    return redirect()->route('home')->with('info', 'Status posted.');
}

在我的用户模型中我有这个

    public function statuses() {
    return $this->hasMany('App\Models\Status', 'user_id');
}

有什么建议吗?

【问题讨论】:

  • $statuses->save() 行期望给出一个模型。所以你应该做$statuses->save(StatusModelHere)
  • 感谢回复,但我对 laravel 有点陌生,我应该把什么模型放在那里?

标签: php laravel laravel-5 eloquent


【解决方案1】:

当你这样做时:

$statuses = Auth::user()->statuses();

你会得到一个状态集合。您不需要这样做,因为您在第 6 行创建了一个新状态。将您的代码更改为:

第 6 行:

$status = Auth::user()->statuses()->create([
    'body' => $request->input('status'),
]);

删除第 16 行:

$statuses = Auth::user()->statuses(); //Remove this line

还有变化:

$status->image = $filename; //Note we changed the var name to the created above.
$status->save();

【讨论】:

  • 我不知道发生了什么,但它确实有效,谢谢!
  • 哈哈哈。我可以解释一下:当您调用statuses()->create() 时,您创建 一个新的Status 并将其保存在$status 变量中。出于学习目的,在分配图像之前使用var_dump($status),在分配之后使用var_dump($status),你会看到它改变了Status。然后你就保存它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2021-12-31
相关资源
最近更新 更多