【问题标题】:Convert object into array in laravel 5.1在laravel 5.1中将对象转换为数组
【发布时间】:2016-03-14 23:23:30
【问题描述】:

我有这段代码可以正常工作

 public function success(Request $request)
 {
    $paymentstatus=$request->input('status');
    $transactionid=$request->input('txnid');
    Ticket::where('transactionid',$transactionid)->update(['paymentstatus'=>$paymentstatus]);
    $ticketdata=Ticket::with('eventdetail')->where('transactionid',$transactionid)->first();

    $venuename=$ticketdata->eventdetail->venuename;
    $eventname=$ticketdata->eventdetail->eventname;
    $eventdate=Carbon::parse($ticketdata->eventdetail->eventdate)->format('d M Y');


 $myticketdata=array('ticketid'=>'200','class'=>'gold','no_of_persons'=>'10','fullname'=>'tommy dollar','email'=>'xya@gmail.com','mobile'=>'9874563210','transactionid'=>'alskdjflaskjdflakjd');

   EmailController::sendemail($ticketdata->email,$myticketdata);

    return "success";
}

但我想发送通过使用下面给定行获取的数组

$ticketdata=Ticket::with('eventdetail')->where('transactionid',$transactionid)->first();

所以在上面的函数中我把这一行改为

EmailController::sendemail($ticketdata->email,$ticketdata);

但执行此代码后,我收到此错误

我知道这个错误是因为我没有将数组传递给这个函数,但我无法纠正这个代码。 我也尝试将对象类型转换为数组,但这在这里不起作用。

【问题讨论】:

    标签: php mysql arrays laravel laravel-5


    【解决方案1】:

    因为$ticketdataIlluminate\Database\Eloquent\Model的一个实例,所以可以使用toArray()方法将其转为数组:

    $ticketdata = Ticket::with('eventdetail')
        ->where('transactionid', $transactionid)
        ->first()
        ->toArray();
    

    http://laravel.com/api/5.1/Illuminate/Database/Eloquent/Model.html#method_toArray

    【讨论】:

      【解决方案2】:
       $status = \Mail::send('emails.templete_name', ['ticketdata' => $ticketdata, 'somethingelse'=> 'somethingelse'], function($message) use ($ticketdata)
                  {
                      $message->to($ticketdata->email, 'text')->subject('text');
                  });
      

      【讨论】:

      • 这不能回答问题。发送电子邮件的代码在EmailController::sendemail() 后面。该方法的参数列表要求第二个参数为数组类型。 OP 要求一种将他的模型转换为数组的方法。
      • 电子邮件中显示的错误,如果错误是在调用 Mail:send 而不是 EmailController::sendmail() 。很可能他在 sendmail() 中使用它
      【解决方案3】:

      试试这个把你的数据放在数组中:

      $ticketdata=Ticket::with('eventdetail')->where('transactionid',$transactionid)->first()->toArray();
      

      【讨论】:

        猜你喜欢
        • 2021-02-11
        • 2014-11-28
        • 2019-11-15
        • 2019-09-18
        • 2015-04-23
        • 2016-08-01
        • 2017-06-30
        相关资源
        最近更新 更多