小编koa*_*aok的帖子

Laravel 多对多关系,有没有办法自动生成数据透视表?

我可能有一种方法可以让 Laravel 自动生成包含多对多关系中枢轴索引的表。或者也许通过工匠?

到目前为止,我正在创建我的实体模型(例如用户和角色:一个用户有许多角色,一个角色由许多用户承担)我在每个模型中定义了belongsToMany 方法。

然后我为 create_users_table、create_roles_table 和 create_role_user_table 创建迁移)

如果有一个命令在创建两个实体后创建具有 n:n 关系表的第三个实体,那就太好了。

(也许答案是:不,它不存在......)

php laravel eloquent

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

如何使用laravel将Mysql(大)表导出为CSV?

您好,我正在尝试使用 laravel 5 框架导出大表(1Millions 行到 CSV 文件)。

粘贴在下面的代码无法正常工作,因为它分配了太多内存。所有结果都存储在内存中,直到我完成写入文件(php exec)

起初我尝试过(非常低效)

1. 从数据库中获取结果

$mytable = 'table';
                $filePath = storage_path().'/csv/test.csv';

                $mins =  Carbon::now()->subMinutes(10000);

                // set the fetch Assoc mode temoporarly
                DB::setFetchMode(PDO::FETCH_ASSOC);

                $results = DB::table("$mytable")->where('ts_activity', '>=', $mins)->get();

                // revert the fetch Class mode 
                DB::setFetchMode(PDO::FETCH_CLASS);
Run Code Online (Sandbox Code Playgroud)

2. 将结果写入文件

if(count($results)>0){
                   $headerLine = implode(',',array_keys($results[0]));

                    dump($headerLine);

                    if(!file_put_contents($filePath, $headerLine.PHP_EOL)){
                        throw new Exception("Cannot write FILE: {$filePath}");                    
                    }

                    foreach($results as $row){   
                        foreach($row as $k=>$v){
                            if($row[$k] == '0000-00-00 00:00:00'){$row[$k] = '';}
                            $row[$k] = trim(str_replace(array(',', "\n", "\r"), ' ', $row[$k]));
                        }

                        //ADDs content …
Run Code Online (Sandbox Code Playgroud)

mysql csv performance export laravel-5

0
推荐指数
1
解决办法
2920
查看次数

在 Laravel REST 应用程序中,使用中间件来验证输入是否正确?

拥有一个提供 REST 服务的 Laravel 应用程序

在对服务的每次调用中,我都希望有一些参数,请求将被路由并传递给控制器​​。

实现一些中间件来检查请求的正确性是否正确,或者在某些情况下(还不知道哪些)最好在控制器内部实现输入验证?

考虑到 Laravel 4 过滤器,已转移到中间件解决方案,我会将输入验证逻辑放在中间件实例中。

middleware laravel

0
推荐指数
1
解决办法
91
查看次数

如何将 Laravel 队列工作限制在一个执行结束出口?

出于测试目的,我将作业排入队列。我在另一边打开了一个命令行,我在其中执行:

php工匠队列:工作

上面的命令一直在终端上监听和运行,直到我手动杀死它。

因为我正在从队列中单独测试 Jobs。让命令执行一个或多个条目并退出而不是作为守护进程执行并且必须以某种方式杀死它会非常好......

还要考虑到,在不重新启动守护程序化命令的情况下,不可能编辑代码并使当前执行 queue:work 获取更新。

testing queue laravel

0
推荐指数
1
解决办法
1367
查看次数

AWS lambda (nodejs) 是否在不同的执行之间共享内存?

我有一个响应 Http 事件 (get) 的 lambda 函数,发送请求,我接受一对标头 headerA 和 headerB。

Lambda是用nodejs / typescript编写的

在实现上,我有一个定义为对象集合的全局变量:

let storage:{[myIndex :typeofHeaderA]? : storageDrivers } = {}
Run Code Online (Sandbox Code Playgroud)

当我收到请求时,我将类的新实例存储到上述全局变量中的“预期”索引上(如果尚未存在):

if(!storage[headerA]){
   storage[headerA] = new MyStorageDriver(headerB)
}
Run Code Online (Sandbox Code Playgroud)

我所经历的是,如果考虑两个不同的请求,彼此接近:

第一个请求标头A1标头B1

第二个请求标头A1标头B2

在第二次请求之后,存储[headerA1]将包含 MyStorageDriver(headerB1) 的实例,而不是 MyStorageDriver(headerB2)

就像在不同的请求 lambda 执行中一样,全局范围内存在请求之间共享或重用。

这是 AWS lambda 的预期结果还是其他原因导致我出现这种意外行为?

我当前的解决方案(并仔细检查此行为,是更改全局变量,如下所示:

      let storage:{[myIndex :typeofHeaderB]? :{
                      [myIndex :typeofHeaderA]? : storageDrivers }
                  } = {}
Run Code Online (Sandbox Code Playgroud)

然后根据请求这样分配:

     if(!storage[headerB]){storage[headerB]={}
     if(!storage[headerB][headerA]){
         storage[headerB][headerA] = new MyStorageDriver(headerB)
     }
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js typescript aws-lambda

0
推荐指数
1
解决办法
1607
查看次数