laravel array_map get error" array_map():参数#2应该是一个数组"

时间:2015-11-09 08:57:19

标签: arrays laravel has-many

我是laravel的新人...为什么我总是得到错误:

  

array_map():参数#2应该是一个数组?

虽然我在这个方法上分配参数数组?

这是我的示例代码:

app:layout_anchorGravity=""

注意: 1类有很多产品

这是来自查询的数组:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res/com.example.myapp"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="#ffffff"
    >
<android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
                                            android:layout_width="match_parent"
                                            android:id="@+id/appBar"
        >
    <!-- Put your content that is supposed to be in the appbar here -->

</android.support.design.widget.AppBarLayout>
<android.support.design.widget.FloatingActionButton
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/your_drawable_resource_file"
        app:borderWidth="0dp"
        app:fabSize="normal"
        app:layout_anchor="@id/appBar"
        app:layout_anchorGravity="left|bottom|start"/>
</android.support.design.widget.CoordinatorLayout>

当我尝试下面的代码时:

$products = Category::find(1) -> products;

我得到如下错误:

[{
   "id": "1",
   "name": "action figure",
   "created_at": "2015-11-09 05:51:25",
   "updated_at": "2015-11-09 05:51:25"
    }, {
        "id": "2",
        "name": "manga",
        "created_at": "2015-11-09 05:51:25",
        "updated_at": "2015-11-09 05:51:25"
    }]

1 个答案:

答案 0 :(得分:4)

你应该写

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from setup import get_name, get_exe_name, build

MAIN_MODULE = 'main.py'

exec('from ' + get_name(MAIN_MODULE) + ' import __version__, __appname__')
build(__version__, __appname__, MAIN_MODULE, dest_base=get_exe_name(__file__))

因为$results = array_map(function ($prod) { return $prod->name; }, $products->toArray()); 是集合而不是数组。

如果您只想获得产品名称列表,请使用$products方法

lists

在较新版本的Laravel中,您应该使用$results = $products->lists('name') 而不是$products->all();,因为在Eloquent集合的情况下,toArray会尝试将模型转换为数组。 toArray将按原样返回模型数组。