簡體   English   中英

Laravel查詢if條件

[英]Laravel query with if condition

如果要滿足條件,我想將數據插入表中。 下面有這樣的代碼嗎?

DB::table('food')->insert([
    'dessert' => $dessert1,
    if(beverage == 1)
        'drinks' => 1;
    else if(beverage == 2)
        'drinks' => 2;
]);
...

您可以嘗試以下方法:(食物是您的榜樣)

$food = new Food(); // new instance of food model
$food->dessert = $dessert1;
if(beverage == 1)
 $food->drinks = 1;
else if(beverage == 2)
 $food->drinks = 2;
$food->save();

這就是處理查詢條件的方式,但是根據您的問題,您可以執行以下操作:

DB::table('food')->insert([
    'dessert' => $dessert1,
    'drinks' => $beverage,
]);

像這樣使用:

碼:

$drinks = 0;
if(beverage == 1)
   $drinks = 1;
else if(beverage == 2)
   $drinks = 2;

DB::table('food')->insert([
    'dessert' => $dessert1,
    'drinks'  => $drinks
]);

一種簡單的方法是將預定義值組成數組,即beverage => drink

$drinks = [ 1 => 1, 2 => 2 ];

DB::table('food')->insert([
    'dessert' => $dessert1,
    'drinks' => $drinks[$beverage];
]);

我認為您可以嘗試以下方法:

if($beverage == 1){
  DB::table('food')->insert([
    'dessert' => $dessert1,
    'drinks' => 1,

]);

}

if(beverage == 2){
  DB::table('food')->insert([
    'dessert' => $dessert1,
    'drinks' => 2,

]);

}

要么

$food = new Food;
$food->dessert = $dessert1;

if($beverage == 1){
  $food->drinks = 1;
}

if($beverage == 1){
  $food->drinks = 2;
}

$food->save();

您要么需要在插入物之外使用if來預先確定值:

$values = [ "dessert" => $dessert1 ];
if($beverage == 1) //How on earth did you ever expect if (beverage == 1) to work in anything?
     $values['drinks'] = 1;
else if($beverage == 2)
    $values['drinks'] = 2;

DB::table('food')->insert($values);

您還可以使用三元運算符(?:)確定內聯值:

DB::table('food')->insert([
    'dessert' => $dessert1,
    'drinks' => ($beverage==1?1:($beverage==2?2:null));
]);

在您的情況下,以下方法也可能起作用:

DB::table('food')->insert([
    'dessert' => $dessert1,
    'drinks' => $beverage
]);

您也可以像這樣在DB創建條件

$query = DB::table('food');

$query->insert(['dessert' => $dessert1]);

if(beverage == 1)
    $query->insert(['drinks' => 1]);
else if(beverage == 2)
    $query->insert(['drinks' => 2]);

首先進行條件檢查,這將使您的代碼清晰易讀,如@RJParikh

$drinks = 0;
if(beverage == 1)
   $drinks = 1;
else if(beverage == 2)
   $drinks = 2;

或者,如果您的條目數量有限,請像@Zayn Ali

$drinks = [ 1 => 1, 2 => 2 ]; // $beverageValue => $drinksValue

然后使用插入-

DB::table('food')->insert([
    ......,
    ......,
]);

但是請記住,如果使用這樣的插入,則必須使模型中的字段可填充。 最好您在食物桌上建立模型,並按照@Firas Rassas答案進行操作。 合並答案,您的代碼將如下所示-

 $drinks = 0;
    if(beverage == 1)
       $drinks = 1;
    else if(beverage == 2)
       $drinks = 2;

    $food = new Food(); // new instance of food model
    $food->dessert = $dessert1;
    $food->drinks = $drinks;
    $food->save();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM