在laravel 5.1中将对象转换为数组

Posted

技术标签:

【中文标题】在laravel 5.1中将对象转换为数组【英文标题】:Convert object into array in 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);

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

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

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于在laravel 5.1中将对象转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

在laravel中将对象转换为数组[重复]

在laravel中将对象转换为数组[重复]

无法在laravel中将数组数组转换为没有索引的对象数组

Laravel 5.1 文档攻略 —— Eloquent:模型对象序列化

在 C# 中将对象数组转换为浮点数组 [关闭]

在 JavaScript 中将数组转换为对象