【问题标题】:What's wrong with my Laravel 5.5 save() method?我的 Laravel 5.5 save() 方法有什么问题?
【发布时间】:2018-08-10 16:35:28
【问题描述】:

我正在使用 Laravel 5.5,我想做基本的表单输入,其中只有一个字段->“电子邮件”。我正在使用 Eloquent 模型与这些订阅者输入的数据库进行交互。调用控制器方法时,出现以下错误:

FatalThrowableError (E_ERROR) 调用成员函数 save() on 字符串

问题是我对我的应用程序中的其他表单(联系表单)使用完全相同的解决方案。这就是为什么我很确定命名空间、模型或其他我写得很好的原因。

这是我的代码:

SubsController.php

class SubsController extends Controller
{
    public function store(Request $request)
    {
        $subscriber = new Subscriber;
        $subscriber=$request->input('email');
        $subscriber->save();
        return redirect()->to(route('homepage'));
    }
}

【问题讨论】:

  • 你在一个字符串上调用save,因为你刚刚将$request->input('email')分配给$subscriber
  • 应该像 $subscriber->email = $request->input('email');

标签: php laravel


【解决方案1】:

请检查这一行,您刚刚为您的 $subscriber 变量分配了一个字符串值

$subscriber =$request->input('email'); 

正确的做法是

public function store(Request $request) { 
    $subscriber = new Subscriber;
    $subscriber->email =$request->input('email'); 
    $subscriber->save(); 
    return redirect()->to(route('homepage')); 
}

【讨论】:

  • 天哪!犯这样的错误太尴尬了!只是因为我“监督”了(凌晨 4 点在这里工作了一整夜)......非常感谢。
  • 我们都会偶尔这样做。哈哈
  • @OndOne 考虑睡个好觉,从早上开始。这种错误正是为什么通宵达旦往往没有效率的原因 - 有时你在一个之后更糟
  • 再次感谢各位,保重。
【解决方案2】:

解决办法如下:

$subscriber = new Subscriber;  
$subscriber->email = $request->input('email');       
$subscriber->save();  
return redirect()->to(route('homepage'));

【讨论】:

    【解决方案3】:

    另一种解决方案是

    public function store() { 
        $data = request()->validate('email');
        Subscriber::create($data);
        return redirect()->route('homepage'); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 2018-03-22
      • 1970-01-01
      相关资源
      最近更新 更多