gpt4 book ai didi

PHP 在 Eloquent 模型中运行原始 SQL 查询

转载 作者:行者123 更新时间:2023-12-05 08:54:06 24 4
gpt4 key购买 nike

我正在尝试在我自己的遗留项目中使用 Laravel 的 Eloquent ORM。我设置了模型并且 Eloquent 工作正常,但我不明白如何使用模型内部的 Eloquent 数据库连接运行原始 SQL 查询。我现在需要运行原始 SQL 查询,直到我可以重构整个代码库以使用 ORM。

namespace App\Providers;

use Illuminate\Database\Capsule\Manager;
use League\Container\ServiceProvider\AbstractServiceProvider;

class DatabaseServiceProvider extends AbstractServiceProvider
{

protected $provides = [
Manager::class
];

public function register()
{

$container = $this->getContainer();

$config = $container->get('config');

$config = $config->get('db.mysql');

$capsule = new Manager;

$capsule->addConnection([
$config
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();

$container->share(Manager::class, function () use ($capsule){
return $capsule;
});

}

}

现在在我的模型中我有以下内容:

namespace App\Models;

use Illuminate\Database\Eloquent\Model as Eloquent;

class User extends Eloquent
{
protected $table = '_users';
}

然后我尝试在我的 Controller 中调用该模型:

namespace App\Controllers;

use App\Views\View;
use App\Models\User;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;

class HomeController
{

protected $view;

public function __construct(View $view)
{
$this->view = $view;
}

public function index(RequestInterface $request, ResponseInterface $response)
{
$user = User::find(1);

dump($user);

}
}

所以这一切都很好,但我不知道如何在模型内部运行原始查询?显然下面的方法行不通,但我想要类似的东西,创建一个新函数并返回结果:

型号:

public function customQuery()
{
$query = 'SELECT * FROM _users';
return $query;
}

Controller :

$user = new User;
$user->customQuery();

最佳答案

Laravel 使用原始 SQL、流畅的查询生成器Eloquent ORM 使跨各种数据库后端的数据库交互变得极其简单>。

这三个都有自己的标准语法格式。

建议:您不应该在模型中创建原始 SQL,您甚至可以在 Controller 中创建(尽管建议遵循存储库模式)但作为初学者,遵循以下步骤会给您预期的结果

更新您的 HomeController 以进行以下操作

  1. 使用Illuminate\Support\Facades\DB
  2. 更新索引方法

    public function index()
    {
    $users = DB::select('SELECT * FROM users');

    dd($users);
    }

引用:https://laravel.com/docs/5.6/database#running-queries

Laravel 是一个很棒的框架。继续学习!!

关于PHP 在 Eloquent 模型中运行原始 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51324398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com