【问题标题】:Laravel 5: How to use remote model?Laravel 5:如何使用远程模型?
【发布时间】:2015-11-03 15:05:33
【问题描述】:

我想为外部 API 创建一个模型,这将允许我运行 get()、where() 等操作。例如:

$users = UserFromApi::get(); // Get all users from api
$activeUsers = UserFromApi::where('active', 1)->get();

我从 CakePHP 来到 Laravel。在 CakePHP 中,它是通过为模型提供自定义数据源和连接来完成的。

对于 Laravel 4,有一个不错的库,名为 Trucker (https://github.com/indatus/trucker),但我发现绝对没有其他适用于 L5 的合理工具。

“将模型映射到外部api”问题的正确做法是什么?

【问题讨论】:

标签: php api model laravel-5


【解决方案1】:

Trucker 现在支持 Laravel 5

按照这些说明配置 Laravel 5 https://github.com/Indatus/trucker/tree/laravel-5#config-laravel

  1. "indatus/trucker": "dev-laravel-5" 添加到composer.json 并运行composer update
  2. 发布配置文件php artisan vendor:publish indatus/trucker
  3. 通过在 config/app.php 中粘贴 'Trucker\TruckerServiceProvider::class' 将 Trucker 添加到您的提供商

希望有所帮助;)

【讨论】:

    【解决方案2】:

    在 config/database.php 中定义你的远程连接。

    'mysql_remote' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
    

    那么如果你使用的是 eloquent 模型

    class UserFromApi extends Eloquent {
    
         protected $connection = 'mysql_remote';
    }
    

    或者使用查询生成器

    DB::connection('mysql_remote')->table('users')->select('email','surname')->get()
    

    【讨论】:

    • 感谢您的回答,但我根本没有使用 MySQL!数据应直接来自 api(以 json 形式返回结果),不涉及数据库。我尝试将这种方法用于连接,但我不知道如何模拟“api-driver”。
    • 哎呀对不起! Guzzle图书馆怎么样? guzzle.readthedocs.org/en/latest
    • 嗯,是的,但这与连接层有关,在我的例子中可以通过简单的 file_get_contents($url) 来实现。我的问题严格来说是Laravel :-) 我的问题可以简化为:“如何在Laravel 中对来自api 的记录进行分页”。我想我会问这样的问题,它更直观。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2017-03-16
    • 1970-01-01
    • 2015-08-08
    • 2015-05-07
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多