我试图在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]"这样的答案只是一个简单的问题谢谢
我想要做的是,我想根据请求的参数在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)
所以这是我的请求,表名和相关列在一个表中.
ALTER TABLE TableName
ADD FULLTEXT INDEX IndexName(ColumnName);
这是在mysql中添加全文索引的查询.
但是,我想要添加全文索引的laravel查询.
提前致谢......
我想设置一个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
我正在使用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) 我的表结构如下
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 …
我想构建一个这样的查询:
select * from users where id=1 AND address="USA" AND (status="active" OR status="pending")
Run Code Online (Sandbox Code Playgroud)
我怎么能用laravel查询生成器呢?
请帮忙.谢谢!
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)
对于这种情况,我知道这是错误的,但现在它有效!
我该怎么做才能以正确的方式解决这个问题?
我想从具有 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,然后使用更新查询再次更新信用。
请让我知道这样做的更好方法。
之间有什么区别:
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 ×9
php ×4
mysql ×3
laravel-5.3 ×2
eloquent ×1
laravel-5 ×1
laravel-5.2 ×1
laravel-5.4 ×1
sql ×1