Laravel属性在此集合实例上不存在

时间:2019-02-17 08:21:49

标签: php mysql laravel laravel-5 laravel-4

我需要将数据从Mysq表(Paniers)传输到另一个Mysql表(Commandes),并在传输后从第一个表中删除数据。

这是我的代码:

"Property [ID_User] does not exist on this collection instance."

我收到此错误:

$pdr = Panier::find($pn)->first();

如果我执行此操作,则只能获取第一行,而不是获取所有数据。我需要获取所有数据行!

int hexToDecimal(String s){
  int result = 0;
  int digit = 0;
  for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    if (c >= '0' && c <= '9')
       digit = c - '0';
    else 
      if (c >= 'A' && c <= 'F')
        digit = 10 + c - 'A';
      else 
        inputError(s);
    result = 16 * result + digit;
  }
  return result
}

3 个答案:

答案 0 :(得分:3)

如果$ pn是数组Panier :: find($ pn)返回集合而不是实体,那么您应该对其进行迭代

Panier::find($pn)->each(function($pdr){
    $user = Commande::create([
        'ID_User'    => $pdr->ID_User,
        'ID_Piece'   => $pdr->ID_Piece,
        'QTE'        => $pdr->QTE,
        ]);
   if($user){
        if($pdr->delete())
            {
                echo 'Commande Confirmée';
            }        
        }
});

答案 1 :(得分:0)

您可以通过#!/bin/bash while IFS= read -r l do printf "%s\n%d\n" "$l" "${#l}" done < "$1" 并处理findOrFail来做到这一点:

Exception

根据laravel 5.0文档:

  

通过主键检索模型或引发异常

     

有时候,如果找不到模型,您可能希望抛出异常。为此,您可以使用firstOrFail方法:

Collection

答案 2 :(得分:0)

在做的时候:

null

如果记录不存在,它将返回$pdr->ID_User。然后,如果您执行<?php function Commande(Request $request) { $pn = $request->input('id'); $pdr = Panier::find($pn); // Model not found if(!$pdr){ return response()->json(['msg' => 'No records found']); } // Create new Commande $user = Commande::create([ 'ID_User' => $pdr->ID_User ?? 'default_value_for_ID_User', 'ID_Piece' => $pdr->ID_Piece ?? 'default_value_for_ID_Piece', 'QTE' => $pdr->QTE ?? 'default_value_for_QTE' ]); // If user is created if($user){ // Delete Panier $pdr->delete(); return response()->json(['msg' => 'Success']); } return response()->json(['msg' => 'Could not create new Commande']); } ,则将引发错误。请检查beloew更新:

ID_User

要使以上各项正常工作,您需要:

  1. ID_Piece模型中标记为{{1}的QTE$fillable = []Commande列。
  2. 您需要具有Panier模型的基本主键,否则delete()将不起作用。