php – 从Laravel中的db模型中获取所有字段

前端之家收集整理的这篇文章主要介绍了php – 从Laravel中的db模型中获取所有字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在创建模型之后,当我尝试获取属性时,我只获得数据库中填充的字段.

----------------------------------------------
DB: | id | shopID | name | bottleID | capacity |
    ----------------------------------------------
    | 1  | 8      | Cola |  3       |          |
    ----------------------------------------------

在这种情况下,我也需要容量属性,作为空字符串

public function getDrinkData(Request $request)
{
    $drink = Drink::where('shopId',$request->session()->get('shopId'))->first();

    if($drink) {
        $drink = $drink->attributesToArray();
    }
    else {
        $drink = Drink::firstOrNew(['shopId' => $request->session()->get('shopId')]);
        $drink = $drink->attributesToArray(); // i want to get even empty fields
    }
    return view('shop.drink')->(['drink' => $drink])
}

但是为了以后的使用(在视图中),我需要拥有所有属性,包括属性.我知道这段代码可以正常工作,但我不知道如何更改它以检测所有属性.

解决方法

您可以使用Schema :: getColumnListing($tableName)来获取表中所有列的数组.使用该信息,您可以创建一个基本数组,其中所有列名称都是键,所有值都为null,然后合并Drink对象的值.

public function getDrinkData(Request $request)
{
    $drink = Drink::where('shopId',$request->session()->get('shopId'))->first();

    if($drink) {
        $drink = $drink->attributesToArray();
    }
    else {
        $drink = Drink::firstOrNew(['shopId' => $request->session()->get('shopId')]);

        // get the column names for the table
        $columns = Schema::getColumnListing($drink->getTable());
        // create array where column names are keys,and values are null
        $columns = array_fill_keys($columns,null);

        // merge the populated values into the base array
        $drink = array_merge($columns,$drink->attributesToArray());
    }
    return view('shop.drink')->(['drink' => $drink])
}

猜你在找的Laravel相关文章