【问题标题】:Laravel FatalErrorException in SerializableClosure.phpSerializableClosure.php 中的 Laravel FatalErrorException
【发布时间】:2015-06-26 07:05:30
【问题描述】:

我的 Laravel 应用程序出现以下错误,有人可以帮我解决这个异常吗?

SerializableClosure.php(153) 中的 FatalErrorException : eval()'d 代码 第 2 行:调用数组上的成员函数 getOwnerEmail()

我的 getter 在 Notices.php 模型中:

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Notice extends Model {

    /**
     * A notice is created by a user
     * @return [type] [description]
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }

    /**
     * Get the email address of the notice
     * @return [type] [description]
     */
    public function getOwnerEmail()
    {
        return $this->user->email;
    }

NoticesController.php

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Provider;
use App\Notice;

use Illuminate\Http\Request;

class NoticesController extends Controller {

    public function store(Request $request)

        {
            $notice = $this->createNotice($request);

            \Mail::queue('emails.dmca', compact('notice'), function($message) use ($notice) {
                $message->from($notice->getOwnerEmail())
                        ->to($notice->getRecipientEmail())
                        ->subject('DMCA Notice');
            });

            return redirect('notices');

        }

    public function createNotice(Request $request)
    {
        $notice = session()->get('dmca') + ['template' => $request->input('template')];

        \Auth::user()->notices()->create($notice);

        return $notice;

    }

    public function create()
    {
        // get list of providers
        $providers = Provider::lists('name', 'id');

        return view('notices.create', compact('providers'));

    }

【问题讨论】:

  • 你正在使用的Notice对象不是模型对象,它是一个数组,你是如何得到$notice变量的,说明它的用途。
  • 请查看更新后的帖子
  • 请显示createNotice
  • $notice = $this-&gt;createNotice($request); 返回一个array

标签: php laravel laravel-5


【解决方案1】:

你可以试试这个:

public function createNotice(Request $request)
{
    $notice = session()->get('dmca') + ['template' => $request->input('template')];

    return \Auth::user()->notices()->create($notice);
}

【讨论】:

  • 我实际上只是通过$notice = \Auth::user()-&gt;notices()-&gt;create($notice); 解决了这个问题,但这也有效。
  • 是的,第一行中的$notice 是一个数组,而不是create 方法返回的object
猜你喜欢
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
相关资源
最近更新 更多