如何通过Laravel

时间:2017-01-02 07:20:06

标签: php mysql arrays laravel object

我是laravel的新人。我通过邮递员发送这种类型的回复。在Laravel控制器中,我在$ request中得到了这个回复。

[{
    "id": 40,
    "cname": "Ramesh",
    "constraint_value": "",
    "r_id": "6",
    "rtype_id": null,
    "deleted_at": null,
    "created_at": null,
    "updated_at": null,
    "input": "111",
    "input2": "111"
}, {
    "id": 45,
    "cname": "Suresh",
    "constraint_value": "",
    "r_id": "6",
    "rtype_id": null,
    "deleted_at": null,
    "created_at": null,
    "updated_at": null,
    "input": "222",
    "input2": "222"
}, {
    "id": 49,
    "cname": "Raj",
    "constraint_value": "",
    "r_id": "6",
    "rtype_id": null,
    "deleted_at": null,
    "created_at": null,
    "updated_at": null,
    "input": "333",
    "input2": "333"
}]

我在

面临困难
  1. 如何计算我在$ request中收到的数组中的对象总数。我曾经使用count($ request)或sizeOf($ request)但它只返回1,尽管有3个数组。帮助我。

  2. 如何通过这样的数组保存数据库中的数据。我想保存input和input2的值。

5 个答案:

答案 0 :(得分:0)

尝试将其转换为数组:

$data = json_decode($request, true);
$count = count($data); // Count number of elements.
Model::insert($data); // Insert all elements into DB.

不要忘记先验证任何输入,然后将除时间戳之外的所有字段添加到$fillable数组中。

答案 1 :(得分:0)

你可以试试这个..

$data = [{},{}]; // your response
$count = 0; 

foreach($data as $obj)
{
  Model::create($obj); //save the model
  $count ++;
}

echo $count // your count

答案 2 :(得分:0)

退出简单

$request ='[ {"id":40,"cname":"Ramesh","constraint_value":"","r_id":"6","rtype_id":null,"deleted_at":null,"created_at":null,"updated_at":null,"input":"111","input2":"111"}, {"id":45,"cname":"Suresh","constraint_value":"","r_id":"6","rtype_id":null,"deleted_at":null,"created_at":null,"updated_at":null,"input":"222","input2":"222"}, {"id":49,"cname":"Raj","constraint_value":"","r_id":"6","rtype_id":null,"deleted_at":null,"created_at":null,"updated_at":null,"input":"333","input2":"333"}]';
$request = (array)json_decode($request, true);

现在正常使用它们。

答案 3 :(得分:0)

我得到了解决方案。我在从angularjs.s发送数据时犯了错误。我直接发送POST请求而没有创建像var data = { 'data':my_request}这样的对象。这就是为什么请求在laravel中使用实例。但是,当我开始通过创建它的工作来发送数据时。这是我第一个问题的解决方案。帮助我如何将收到的数据存储在数据库中。

答案 4 :(得分:0)

可能晚了,但将来可能会帮助某个人。首先。您需要像这样遍历对象数组

foreach($request->all() as $key => $value){
    $model = new Model();
    $model->attribute1 = $value['attribute1'];
    $model->attribute2 = $value['attribute1'];
    $model->attributeN = $value['attributeN']; // where N is infinite # of attr
    $model->save();
}

所以发生的事情是,每次循环迭代时,它都会在循环内创建一个Model类型的新对象,并从数组键值分配对象属性,并保留在DB中,并且重复直到数组中的所有对象完成。

$model = new Model();

是必需的,以便每个时间循环都可以迭代它创建一个新对象并保持不变。如果u在每次N迭代时都不创建对象,则该循环只能保存一个对象。如果您在构造函数中创建模型对象,并且在构造函数运行时实例化了一次,则可能会发生这种情况。

希望这会有所帮助。