如何使用3个参数Laravel从数据库中获取数据

时间:2019-10-15 06:23:30

标签: mysql laravel eloquent

我对这只Laravel还是陌生的,因为现在我面临着从数据库中获取数据的麻烦。我想要得到的是,当只有一个数据可用时,第二个参数将不会执行,但是如果第二个参数上有一些数据可用,则将调用第一个参数和第二个参数中的所有数据。

    $detail = Barang_Keluar_Detail::findOrFail($id); //15
    $cariid = $detail->pluck('barang_keluar_id');
    $instansiquery = Barang_Keluar::where('id',$cariid)->first(); //21
    $instansiid = $instansiquery->pluck('instansi_id');
    $tanggal = $instansiquery->pluck('tanggal')->first();//2019-12-31

和参数在这里

    $cariinstasama = Barang_Keluar::where('id', $cariid)
        ->orWhere(function ($query) use($instansiid, $tanggal) {
            $query->where('tanggal', "'$tanggal'")
            ->where('instansi_id', $instansiid);
        });

请您提供任何帮助,谢谢。

3 个答案:

答案 0 :(得分:4)

Laravel查询构建器提供了一种优雅的方式来使用when()来放置条件子句。您可以像这样在查询中放置条件子句:

$cariinstasama = Barang_Keluar::where('id', $cariid)
    ->when($instansiid, function ($query, $instansiid) {
        return $query->where('instansi_id', $instansiid);
    })
    ->when($tanggal, function ($query, $tanggal) {
        return $query->where('tanggal', $tanggal);
    })->get();

有关更多信息,请参见https://laravel.com/docs/5.8/queries#conditional-clauses

答案 1 :(得分:3)

您也可以尝试。

$cariinstasama = Barang_Keluar::where('id', $cariid);

if($instansiid !== null)
{
   $cariinstasama->where('instansi_id', $instansiid); 
}

if($tanggal !== null) 
{
   $cariinstasama->where('instansi_id', $instansiid);
}

$result = $cariinstasama->get();

答案 2 :(得分:0)

不清楚您到底想要什么。

如果第一个参数结果给您数据库中的多个行,您是否在查询上应用多个参数?如果是,请检查我的方法:

$query = new Model(); // the model you want to query
if($query->where('col1', $param1)->count() > 1) // checks if the query from the 1st parameter produces more than one row in the database
     $query = $query->where( // if yes apply more parameters to the query
        [
           ['col1', $param1],
           ['col2', $param2]
        ]
     );
else
    $query = $query->where('col1', $param1);
$results = $query->get();

希望有帮助。...