2016-01-07 4 views
1

привет, я вставляю несколько строк в свою базу данных, и я хочу проверить, существует ли это значение, а затем не вставлять, если не вставить его, это мой контроллер:проверить, существует ли строка в базе данных

<?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'); 
    } 
} 

Может ли кто-нибудь помочь мне проверить, существует ли он или нет?

+0

Показать ваш точный код/​​ошибку у вас есть? –

+2

Я просто хотел, как это сделать, я попробовал, и я понял способ сделать это поблагодарить u :) –

+1

, если вы нашли решение, вы должны разместить его в качестве ответа и принять его, чтобы другие пользователи могли извлечь выгоду из него –

ответ

3

ответ был использовать функцию подсчета так:

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'); 
     } 
} 
1

Если вы используете mysql вы можете использовать INSERT IGNORE и laravel's raw queries

Единственным условием является то, что у вас есть индекс UNIQUE, определенный на колонке в таблице.

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

на самом деле я оштрафован другим способом сделать это, и я не использую sql thank u very much :) –

0

В принципе, вы можете выполнить запрос из таблицы желаний ищут для этого конкретного продукта. После этого, если запрос не имеет результата, вы вставляете данные. Например,

$found = DB::table('wishlist')->where('name', $product_name)->first(); 
if (!$found) { 
    //insert to table 
} 
Смежные вопросы