2014-10-02 96 views
2

美好的一天,我有这条SQL语句,我在如何在Laravel Query中进行转换时遇到困难。Laravel 4查询构建SQL语句

我看了http://laravel.com/docs/4.2/queries的文档,我很困惑。任何帮助都可以。

SELECT count(*) FROM `transactions` WHERE `borrower_id` = 2 
      AND `book_id` = 2 AND (
       (
        `reservedDate` IS NOT NULL 
        and `borrowedDate` IS NULL 
       ) 
       OR (
        `borrowedDate` IS NOT NULL 
        AND `returnedDate` IS NULL 
       ) 
      ) 

回答

1

所以我尝试从Laravel阅读单证建立这个查询。还没有测试过,但希望它能给你正确的方向。

也许下一次,你应该显示你自己的查询(没关系,如果它不正确)。从那里开始更容易。

$super_query = DB::table('transactions')->where('borrower_id' , '=' , 2)->where('book_id', '=' , 2)->where(function ($query) { 
$query->where(function ($query1) { 
    $query1->whereNotNull('reservedDate')->whereNull('borrowedDate') 
)->orWhere(function ($query2) { 
    $query2->whereNotNUll('borrowedDate')->whereNull('returnedDate') 
}) 
})->count(); 
+1

谢谢!接下来我会显示我的问题,我吓坏了。 – yowza 2014-10-02 03:38:54

+0

为什么downvote?任何想法来改善这个答案?谢谢 – 2014-10-02 03:39:35

+0

@yowza如果你确定只是把它标记为正确的答案。谢谢 – 2014-10-02 03:40:08

0
book::count()->where('borrower_id','=','2','book_id','=',2) 
+1

谢谢你提供的 '其中' 语句,我仍然需要其他部分.. – yowza 2014-10-02 03:31:09

1
DB::table('transactions') 
    ->Where('borrower_id', '=', 2) 
    ->Where('book_id', '=', 2) 
    ->where(function($query) 
    { 
    $query->where(function($query1) { 
     $query1->whereNotNull('reservedDate') 
      ->whereNull('borrowedDate'); 

    }) 
    ->orWhere(function($query2) { 
     $query2->whereNotNull('borrowedDate') 
      ->whereNull('returnedDate'); 
    }); 
})->count(); 

试试这个..这将导致到

select count(*) from `transactions` where `borrower_id` = 2 and `book_id` = 2 and ((`reservedDate` is not null and `borrowedDate` is null) or (`borrowedDate` is not null and `returnedDate` is null)) 
+0

谢谢,我也会试试这个! – yowza 2014-10-02 03:43:17

+0

男人,你打我30秒! – 2014-10-02 03:44:57

+0

@JaredEitnier我还是新来的......只是注册帮忙......我不知道这是比赛 – 2014-10-02 03:47:12

1

试试这个:

雄辩

Transactions::where('borrower_id', '=', 2) 
    ->where('book_id', '=', 2) 
    ->where(function($query) 
    { 
     $query->whereNotNull('reservedDate') 
       ->whereNull('borrowedDate'); 
    }) 
    ->orWhere(function($query) 
    { 
     $query->whereNotNull('borrowedDate') 
       ->whereNull('returnedDate'); 
    }) 
    ->count();