我对这只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);
});
请您提供任何帮助,谢谢。
答案 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();
希望有帮助。...