将 JSON 转换为 Laravel 控制器中的模型

Convert JSON to model in Laravel controller

你好 ajax 来自 jQuery 的电话:

$.ajax(
            {
               type:'POST',
               url:link.href + "/item",
               cache: false,
               data: { "loupe": loupe, "element": element, "loupeElements": loupeElements, "loupeAlias": loupeAlias, "elementAlias": elementAlias },
               success: function(data){
                    $(".carousel-content").animate({opacity:1}, 300);    
                    $(".carousel-content").html(data);
                    FB.XFBML.parse();
                    twttr.widgets.load()
                    return true;
               }
            }
         );

它很好地向我的控制器传递数据:

class IndexController extends Controller {

public function getItem()
{
    $input = Input::all();

    $loupe = $input['loupe'];
    $element = $input['element'];
    $loupeElements = $input['loupeElements'];
    $loupeAlias = $input['loupeAlias'];
    $elementAlias = $input['elementAlias'];

    return View::make('_partials.item', $input);
}

问题是 javascript 变量 loupe、element 和 loupeElements 以逗号分隔 json's ({"id":30,"alias":"mi-lupa"," name":"Mi Lupa".....),所以我在控制器的 getItem 函数中得到的只是一个包含该信息的字符串。我想将 json 转换为模型以便我可以使用它,但是我无法在 Laravel.

中找到执行此操作的方法

您可以使用 json_decode.

在你的控制器中你可以做这样的事情

$loupe = json_decode($input['loupe'])->id // this will give you the id 30 of loupe

现在您已经 loupe id 如果您有放大镜模型,您可以使用 Loupe::find($loupe)

希望这对您有所帮助

嗯,您可以在 Laravel 中轻松完成。 假设您得到 json 字符串,例如

$jsonString = "{'id':'1','name':'ABC','age':'20'}";

首先,您可以通过调用 json_decode 函数将其转换为 stdClass。

$rawUserData = json_decode($jsonString);

然后假设您有一个名为“User”的 Eloquent 模型。 您可以使用上述 $rawUserData 对象的数据创建 User class 的实例,如下所示。

$userAbc = new User();
$userAbc->fill( get_object_vars($rawUserData) ); 

get_object_vars does 所做的是,它将 $rowUserData 属性转换为数组。 所以你有它,具有 json 数据的用户模型。

注意:您可能需要检查 eloquent 模型中的 $fillable$guard 属性,以过滤要填充的属性 mass assignment

希望对您有所帮助。