【问题标题】:check if the row exists or not in the database检查该行是否存在于数据库中
【发布时间】:2016-01-07 13:53:14
【问题描述】:

嗨,我正在我的数据库中插入一些行,我想检查该值是否存在然后不插入,如果不存在则插入它,那是我的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Input;
use Auth;
use App\User;
use App\Product;
use DB;

class listController extends Controller
{
    //
    public function getIndex(Request $request){
        $user_id=Auth::user()->id;
        $list=DB::table('wishlist')
                ->join('products','wishlist.product_id','=','products.id')
                ->join('users','wishlist.user_id','=','users.id')
                ->select('wishlist.id','wishlist.product_id','wishlist.user_id',
                    'products.id as p_id','products.name','products.salary','products.image_name',
                    'users.id as u_id')
                ->where('wishlist.user_id','=',$user_id)
                ->get();

        return view('contents.wishlist')->with('list',$list);
    }
    public function postIndex(Request $request){
        $id=$request->input('id');
        $user_id=Auth::user()->id;
        $product_id =$request['product_id'];


        DB::table('wishlist')->insert(['id'=>$id,'user_id'=>$user_id,'product_id'=>$product_id]);
        return redirect('wishlist');
    }
    public function deleteDeleteProduct(Request $request,$id){
        $pro=$request->get('id');
        DB::table('wishlist')->where('id',$pro)->delete();
        return redirect('wishlist');
    }
}

谁能帮我检查它是否存在?

【问题讨论】:

  • 显示你得到的确切代码/错误?
  • 我只是想知道怎么做,我试过了,我想出了一个方法谢谢你:)
  • 如果您确实找到了解决方案,您应该将其作为答案发布并接受它,以便其他用户可以从中受益

标签: php database laravel-5


【解决方案1】:

答案是像这样使用计数函数:

public function postIndex(Request $request){

        $id=$request->input('id');
        $user_id=Auth::user()->id;
        $product_id =$request['product_id'];

        $wishlist=DB::table('wishlist')
                    ->where('user_id','=',$user_id)
                    ->where('product_id','=',$product_id)
                    ->count();

        if($wishlist > 0){
            return redirect('wishlist');
        }
        else{
            DB::table('wishlist')
              ->insert(['id'=>$id,'user_id'=>$user_id,'product_id'=>$product_id]);
            return redirect('wishlist');
        }
}

【讨论】:

    【解决方案2】:

    如果你使用mysql,你可以使用INSERT IGNORElaravel's raw queries

    唯一的条件是您在表中的列上定义了 UNIQUE 索引。

    DB::insert(
         'insert ignore into wishlist (id, user_id, product_id) values (?, ?)', 
         [$id, $user_id, $product_id]
    );
    

    【讨论】:

    • 实际上我找到了另一种方法,我没有使用 sql 非常感谢你:)
    【解决方案3】:

    基本上,您可以从愿望清单表中运行查询以搜索该特定产品。之后,如果查询没有结果,则插入数据。例如,

    $found = DB::table('wishlist')->where('name', $product_name)->first();
    if (!$found) {
       //insert to table
    }
    

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      相关资源
      最近更新 更多