Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查行是否存在,以及是否未插入数据_Php_Mysql_Laravel 4_Eloquent - Fatal编程技术网

Php 检查行是否存在,以及是否未插入数据

Php 检查行是否存在,以及是否未插入数据,php,mysql,laravel-4,eloquent,Php,Mysql,Laravel 4,Eloquent,我有一个雄辩的模型,在我的一个表中创建新条目。我遇到的问题是,每次页面运行时,都会反复插入数据。如何检查该数据是否已存在于该表中,如果该数据不存在,则插入该特定数据 foreach($xml as $product) { //var_dump($product); die; Order::where('id', '=', $product->reference)->update( array(

我有一个雄辩的模型,在我的一个表中创建新条目。我遇到的问题是,每次页面运行时,都会反复插入数据。如何检查该数据是否已存在于该表中,如果该数据不存在,则插入该特定数据

        foreach($xml as $product) {        

        //var_dump($product); die;

        Order::where('id', '=', $product->reference)->update(
            array(
                'invoice_id' => $product['orderid'],
                'shipped' => $product['shipped'],
                'processed' => $product['processed'],
                'problem' => $product['problem'],
            )
        );

        $tracking = new OrderTrack();
        $tracking->invoice_id = $product['orderid'];
        $tracking->shipper = $product->shipping->shipper;
        $tracking->shipping_method = $product->shipping->shipping_method;
        $tracking->shipping_date = $product->shipping->shipping_date;
        $tracking->shipping_cost = $product->shipping->shipping_cost;
        $tracking->tracking_number = $product->shipping->tracking_number;
        if(!empty($product->shipping->shipping_notes)) {
            $tracking->shipping_notes = $product->shipping->shipping_notes;
        }

        $tracking->save();
        echo'done';
    }
OrderTrack是我关心的代码部分。无论行是否已经存在,它都将创建一个新条目

$xml var_dump

利用firstOrNew


你能编辑你的代码以便我能在$xml之前看到它吗?这是一个转换后的xml文件,我把一些代码放在了问题中。希望有帮助!谢谢我对eloquent一点也不熟悉,只是php和mysql为什么不从表中选择查询,然后如果查询结果不是空的,就用xml插入数据?是的,我想过这样做,但必须有一种方法在eloquent中这样做。谢谢你的关注!看看这个,它可能对你有帮助
object(SimpleXMLElement)[294]
  public 'order' => 
    array (size=15)
      0 => 
        object(SimpleXMLElement)[295]
          public '@attributes' => 
            array (size=7)
              ...
          public 'reference' => string '3053' (length=4)
          public 'reference2' => 
            object(SimpleXMLElement)[310]
              ...
          public 'reference3' => 
            object(SimpleXMLElement)[311]
              ...
          public 'invoice' => 
            object(SimpleXMLElement)[312]
              ...
          public 'order_date' => string '2014-08-14 03:00:06' (length=19)
          public 'billing_date' => string '2014-08-14 00:00:00' (length=19)
          public 'changed' => string '2014-08-14 13:02:15' (length=19)
          public 'sender' => 
            object(SimpleXMLElement)[313]
              ...
          public 'receiver' => 
            object(SimpleXMLElement)[314]
              ...
          public 'shipping' => 
            object(SimpleXMLElement)[315]
              ...
          public 'products' => 
            object(SimpleXMLElement)[316]
              ...
      1 => 
        object(SimpleXMLElement)[296]
          public '@attributes' => 
            array (size=7)
              ...
          public 'reference' => string '3054' (length=4)
          public 'reference2' => 
            object(SimpleXMLElement)[328]
              ...
          public 'reference3' => 
            object(SimpleXMLElement)[329]
              ...
          public 'invoice' => 
            object(SimpleXMLElement)[330]
              ...
          public 'order_date' => string '2014-08-13 22:00:02' (length=19)
          public 'billing_date' => string '2014-08-14 00:00:00' (length=19)
          public 'changed' => string '2014-08-14 13:02:20' (length=19)
          public 'sender' => 
            object(SimpleXMLElement)[331]
              ...
          public 'receiver' => 
            object(SimpleXMLElement)[332]
              ...
          public 'shipping' => 
            object(SimpleXMLElement)[333]
              ...
          public 'products' => 
            object(SimpleXMLElement)[334]
              ...
        $tracking = OrderTrack::firstOrNew(array('invoice_id' => $product['orderid']));

        $tracking->invoice_id = $product['orderid'];

        $tracking->shipper = $product->shipping->shipper;

        $tracking->shipping_method = $product->shipping->shipping_method;

        $tracking->shipping_date = $product->shipping->shipping_date;

        $tracking->shipping_cost = $product->shipping->shipping_cost;

        $tracking->tracking_number = $product->shipping->tracking_number;

        if(!empty($product->shipping->shipping_notes)) {
            $tracking->shipping_notes = $product->shipping->shipping_notes;
        }

        $tracking->save();