9

从 Eloquent Model 获取所有行时:

$pin = Pin::all();

我得到一个看起来像这样的数组:

array(2) {
  [0]=>
  object(Pin)#36 (5) {
    ["attributes"]=>
    array(9) {
      ["id"]=>
      string(1) "2"
      ["creator"]=>
      string(1) "1"
    ["original"]=>
    array(9) {
      ["id"]=>
      string(1) "2"
      ["creator"]=>
      string(1) "1"
    }
    ["relationships"]=>
    array(0) {
    }
    ["exists"]=>
    bool(true)
    ["includes"]=>
    array(0) {
    }
  }
}

就像我使用 Fluent 时一样:

$pin = DB::table('pins')->get();

我得到一个没有“Attribute”、“Orginial”、“realtionships” ……索引的普通数组。

我怎样才能使用 Eloquent 让它像 Fluent 一样返回一个普通数组?

4

4 回答 4

11

它非常简单。

$pins = Pin::get();
foreach($pins as $p){
 $pin[] = $p->to_array();
}

或者如果您想发送 JSON 对象,请尝试使用

$pins = Pin::all();
return Response::eloquent($pins);

或者如果您有一个要转换为 json 输出的数组而不是使用

return Response::json(array('name' => 'Batman'));
于 2012-10-07T21:43:09.003 回答
3

使用 Laravel 4,您可以:

//get all pins from db
public function index(){
  return Pin::all();
}

//get specific pin from db
public function show($id){
  return Pin::find($id);
}

这将以 Json 格式返回您的数据

于 2012-11-27T18:21:41.207 回答
1

Laravel 有一个内置to_array()函数,所以你可以做这样的事情。

$pins = Pin::all();
foreach($pins as $pin) {
    $pin_array = $pin->to_array();
    /* Do something with pin array here */
}

希望有帮助:D

于 2012-10-08T10:32:08.810 回答
0

或者

$model->original;
// but still do a foreach loop.
// Like so

$pins = Pin::all();
foreach($pins as $pin) {
    $pin_array = $pin->original;
    /* Do something with pin array here */
}
于 2013-03-21T11:54:33.133 回答