【发布时间】:2015-08-13 18:51:08
【问题描述】:
场景是我有一个朋友,如果他知道他可以在另一个图书馆得到同样的书,他只会把他借来的书借给我。所以他做了以下查询:
$collectbook= LibraryOne::where('user_id', Auth::id())->get();
然后他需要遍历数组以收集相关 ID,预测他有 4 本书,但他不确定。
if (isset($collectbook)) {
foreach ($collectbook as $books =>$values)
if($books==0){
$first_book = ($values->book_id);
}elseif ($books==1){
$second_book = ($values->book_id);
}elseif($books==2) {
$third_book = ($values->book_id);
}elseif($books==3) {
$fourth_book = ($values->book_id);
}
}
然后我运行四个单独的查询来检查他是否有匹配的书籍
try {
$collectbookone= LibraryTwo::where('user_id', Auth::id())
->where('item_id', $first_book)->first();
}catch(\Exception $e){
}
try {
$collectbooktwo= LibraryTwo::where('user_id', Auth::id())
->where('item_id', $second_book)->first();
}catch(\Exception $e){
}
try {
$collectbookthree= LibraryTwo::where('user_id', Auth::id())
->where('item_id', $third_book)->first();
}catch(\Exception $e){
}
try{
$collectbookfour= LibraryTwo::where('user_id', Auth::id())
->where('item_id', $fourth_book)->first();
}catch(\Exception $e){
}
问题是,是否有人知道以比上面更优雅的方式列出图书馆一和图书馆二中所有匹配书籍的方法。不知道一个人一开始有多少本书是个问题..提前谢谢
【问题讨论】:
-
听起来像家庭作业?
-
哈哈!不是我这样写的,这样更容易理解
-
如果您将相同的 try/catch 重复 4 次放入函数中,您会更轻松。
-
换句话说,您正试图获得一本同时出现在两个图书馆中并且属于特定用户的书?
-
感谢@Wad Shuler 我是 php 新手,所以我会研究一下