标签: laravel-query-builder

laravel中的mysql_num_rows?

我试图在laravel中使用mysql_num_rows,但laravel说它与'raw php'不一样

例:

$users = DB::table('users')
         ->where('username', '=', $username)
         ->where('password', '=', $password)
         ->get();
Run Code Online (Sandbox Code Playgroud)

我想做的事:

$count = mysql_num_rows($users);

   if($count > 0 ){

      $user->login = $request->login;
      $user->email = $request->email;
      $user->password = $request->password;

      Auth::login($user);
      return redirect("/");
      }else{
         return "datos incorrectos";
      }
Run Code Online (Sandbox Code Playgroud)

什么laravel说:

Call to undefined function App\Http\Controllers\Auth\mysql_num_rows()
Run Code Online (Sandbox Code Playgroud)

PD:它不是代码哲学只是为了对这个问题做出评价,我不想要像"你要加密这个东西吗?","为什么不使用[插入我的法布里特ORM]"这样的答案只是一个简单的问题谢谢

sql mysql-num-rows laravel laravel-query-builder

6
推荐指数
1
解决办法
8031
查看次数

如何在laravel 5.3中进行动态查询?

我想要做的是,我想根据请求的参数在laravel 5.3中进行动态查询,因此在请求中我将获得列名,然后过滤该查询,我不知道我想要处理数据的表.所以,我的问题是如何决定该查询的表?或者我应该将表和各列存储在一个数据库的表中,并将请求的参数与该表匹配,以便获取表名并能够输入该查询?

但我认为这将花费我的处理费用?所以这就是我发布这个问题的原因.请帮助我找到符合我的动态查询要求的最佳方案?

更新

请求将是这样的

{
  "col": ['fname', 'lname'],
  "offset": 1,
  "limit": 25,
  "order": [ASC, fname, lname],
  "filter": [
    {
      "col": "id",
      "op": "=",
      "val": 8
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

所以这是我的请求,表名和相关列在一个表中.

laravel laravel-query-builder laravel-5.3 laravel-eloquent

6
推荐指数
1
解决办法
2471
查看次数

查询在Laravel中添加全文索引

ALTER TABLE TableName ADD FULLTEXT INDEX IndexName(ColumnName);

这是在mysql中添加全文索引的查询.

但是,我想要添加全文索引的laravel查询.

提前致谢......

php mysql full-text-indexing laravel laravel-query-builder

5
推荐指数
1
解决办法
1634
查看次数

如何将时间更新到 NOW()?

我想设置一个date字段NOW()是否过时。这是我尝试运行但没有成功的查询:

Quiz::('date', '<', DB::raw('NOW()'))->update(['date' => DB::raw('NOW()')])
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

PS如果可能的话,
我不想处理Carbon以避免服务器/数据库时差问题。

laravel eloquent laravel-5 laravel-5.2 laravel-query-builder

5
推荐指数
1
解决办法
3399
查看次数

在Model:Laravel中运行原始sql

我正在使用Laravel并且需要从Model/Repository类运行原始sql查询

INSERT INTO calendar 
(room_id, date, default_count, default_price) 
VALUES ('1', '2017-01-02', '2', '400004') 
ON DUPLICATE KEY UPDATE 
default_count = VALUES(default_count), default_price = VALUES(default_price);
Run Code Online (Sandbox Code Playgroud)

恩.当我从UserRepository插入数据时

$this->users->insert(['email' => 'john@example.com', 'votes' => 0]);
Run Code Online (Sandbox Code Playgroud)

我需要某种方法来获取数据库连接并通过模型运行sql

//Something like
$this->users->execute($sql);
Run Code Online (Sandbox Code Playgroud)

我看到Laravel有updateOrInsert()方法,但我需要一次为多个数据集运行它.

如何通过模型类或存储库运行原始sql查询?

谢谢

更新 - 已解决

我浏览了Eloquent Model Sourcecode,发现我可以从getConnection()方法获得连接

$this->users->getConnection()->statement($sql);
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-query-builder laravel-eloquent

5
推荐指数
1
解决办法
1409
查看次数

在 Laravel 中使用不同的多列

我的表结构如下

date        seller  unit    price   total
05-06-17    abc     14      700     9800
05-06-17    pqr     12      600     7200
05-06-17    abc     10      520     5200
06-06-17    abc     10      600     6000
06-06-17    pqr     15      520     7800
06-06-17    pqr     16      520     8320
Run Code Online (Sandbox Code Playgroud)

我需要获取记录

1) 'date' = '05-06-2017', 'seller' = 'abc', 'total' = '15000'
2) 'date' = '05-06-2017', 'seller' = 'pqr', 'total' = '7200'
3) 'date' = '06-06-2017', 'seller' = 'abc', 'total' = '6000'
4) 'date' = '06-06-2017', 'seller' = 'pqr', 'total' = '16120'
Run Code Online (Sandbox Code Playgroud)

我需要按日期从数据库中获取数据。seller abc …

laravel laravel-query-builder laravel-5.3 laravel-eloquent

5
推荐指数
2
解决办法
1万
查看次数

Laravel查询构建器在何处或何处

我想构建一个这样的查询:

select * from users where id=1 AND address="USA" AND (status="active" OR status="pending")
Run Code Online (Sandbox Code Playgroud)

我怎么能用laravel查询生成器呢?

请帮忙.谢谢!

mysql laravel-query-builder

5
推荐指数
1
解决办法
4710
查看次数

laravel 使用 select case 和参数绑定时分页

Laravel 版本:5.5

PHP版本:7

你好,我想执行这个查询:

select (case 
   when(title like 'my-keyword') then 1
   when(description like 'my-keyword') then 2
   ) as ordering from products where id > 10;
Run Code Online (Sandbox Code Playgroud)

当我通过查询生成器执行此操作时:

$products = DB::table('products')->select(DB::raw('(case 
   when(title like "?") then 1
   when(description like "?") then 2
   ) as ordering'))->where('id', '>', 10)->setBindings(['my-keyword', 'my-keyword'])->paginage(10);
Run Code Online (Sandbox Code Playgroud)

这将获得计数,正如我们所知,这将删除所有选择部分并将其替换为 count(*) 作为聚合,因此如果我在此查询生成器上使用 setBindings 并传递 ['my-keyword', 'my-keyword']此聚合查询将更改为:

select count(*) as aggregate from products where id > my-keyword;
Run Code Online (Sandbox Code Playgroud)

因此,这将导致在此查询和其他类似查询的替代方案上使用分页的问题!

为了解决这个问题,我更改了/..../Query/Builder.php中的一些代码:

$total = $this->getCountForPagination($columns);
Run Code Online (Sandbox Code Playgroud)

对此:

$all = $this->get();
$total = $all->count();
Run Code Online (Sandbox Code Playgroud)

对于这种情况,我知道这是错误的,但现在它有效!

我该怎么做才能以正确的方式解决这个问题?

php laravel laravel-pagination laravel-query-builder

5
推荐指数
1
解决办法
719
查看次数

Laravel 5.4:直接从数据库中的列中减去数字

我想从具有 int 数据类型的数据库中的 credit 列中减去 100 个数字。我正在寻找用一些 Laravel 查询直接减去它的方法。但是现在我首先从表中获取列值,然后减去,然后需要编写更新查询来更新它,如下所示:

$subtractCredit = 100;

// Get Total Credit
$totalCredit = User::select('credit')->where(['username'=>$username])-
>first(); 

// Subtract 100 from Total Credit
$totalCredit = $totalCredit->credit - $subtractCredit;

// Update Credit in Table
User::where(['username'=>$username])->update(['credit' => $totalCredit]);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我首先从查询中获得总信用,然后从总信用中减去 100,然后使用更新查询再次更新信用。

请让我知道这样做的更好方法。

php mysql laravel laravel-query-builder laravel-5.4

5
推荐指数
2
解决办法
1万
查看次数

Laravel查询生成器,选择原始或选择并原始

之间有什么区别:

DB::table('some_table')
->selectRaw('COUNT(*) AS result')
->get();
Run Code Online (Sandbox Code Playgroud)

和:

DB::select(DB::raw(" 
SELECT COUNT(*) AS result
FROM some_table"));
Run Code Online (Sandbox Code Playgroud)

他们在文档https://laravel.com/docs/5.6/queries中广告有关使用raw()适当的SQL注入,但是与selectRaw?相同。

laravel laravel-query-builder

5
推荐指数
1
解决办法
7870
查看次数