小编Wen*_*Adi的帖子

Go:如何使用NamedExec()在Postgresql上获取最后一个插入ID

我使用jmoiron/sqlx库与我的Go应用程序中的PostgreSql服务器进行通信.在我的应用程序的某个地方,我有以下代码:

sqlQuery := `
    INSERT INTO table_to_insert  (
        code,
        status,
        create_time,
        create_by
    ) VALUES (
        '',
        0,
        CURRENT_TIMESTAMP,
        0
    ) RETURNING id
`

datas, err := tx.NamedExec(sqlQuery, structToInsert)
Run Code Online (Sandbox Code Playgroud)

问题:如何使用返回来获取最后一个插入ID tx.NamedExec()?我已经尝试datas.LastInsertId()但它总是返回0.

注意:我确定插入postgres是成功的.

postgresql go sqlx

19
推荐指数
2
解决办法
7218
查看次数

Laravel Eloquent:计算总价的最佳方式

我正在用Laravel 5.1构建一个简单的买卖应用程序.每个购买模型都有许多BuyDetail,它存储购买的商品数量和buy_price.我已经在Model上实现了表之间的关系.

class Buy extends Model
{
  #Eloquent relationships

  public function supplier()
  {
    return $this->belongsTo('App\Supplier');
  }

  public function buyDetails()
  {
    return $this->hasMany('App\BuyDetail');
  }
}
Run Code Online (Sandbox Code Playgroud)

我想计算每次购买的总价.使用Eloquent ORM计算总价的最佳方法是什么?

现在我只是这样实现它:

@foreach($buys as $key => $value)
    <?php
        $total = 0;
    ?>
    @foreach($value->buyDetails as $k => $bD)
        <?php
            $total += ($bD['buy_price']*$bD['qty']);
    ?>
    @endforeach

   <tr>
    <td>{{$value->ref_number}}</td>
    <td>{{$value->suplier->name}}</td>
    <td>{{$value->created_at}}</td>
    <td>{{$value->buyDetails->count()}}</td>
    <td>{{$total}}</td>
    <td>
        <a href="" class="btn btn-default btn-sm" title="show">Detail</a>
        <a href="" class="btn btn-primary btn-sm" title="edit">Edit</a>
        <a href="" class="btn btn-danger btn-sm" title="delete">Delete</a>
    </td>
  </tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5 laravel-5.1

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

Go:什么时候json.Unmarshal结构返回错误?

假设我有一个类似的结构

type A struct{
  name string`json:"name"`
}
Run Code Online (Sandbox Code Playgroud)

然后在主要我有代码

var jsonString string = `{"status":false}`
var a A
error := json.Unmarshal([]byte(jsonString),&a)
Run Code Online (Sandbox Code Playgroud)

显然上面的代码产生了一个nil错误,无论json格式是不同的.什么时候json.Unmarshal()会在Go中返回错误?

json struct go

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

Github:恢复后忽略的更改(git cherrypick,git rebase)

假设我有两个分支AB

(A)--------(A+B)--------------(A+B+R)
 \        / merge   \ revert  /
  \      /           \       /
 (B)----(B+)         (R)----
Run Code Online (Sandbox Code Playgroud)

首先,我将分支合并BA,然后我使用 GitHub 的恢复功能恢复了合并请求。

现在,当我在分支上修复一些代码B并需要A再次合并时,几乎所有更改(我修复的新更改除外)都将被忽略。我怎样才能再次获得更改?

git github

4
推荐指数
2
解决办法
2808
查看次数

Go:使用乘数将float64转换为int

我想转换一个float64数字,让我们也说1.0031003(整型).我的实现只是将float64with 乘以1000并将其转换为int.

package main

import "fmt"


func main() {
  var f float64 = 1.003
  fmt.Println(int(f * 1000))
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该代码时,我得到的1002不是1003.因为Go会自动存储1.0031.002999...变量.在Golang上进行这种操作的正确方法是什么?

floating-point type-conversion go

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

Go-lang 测试,Benchmark 上的 Parallel Setting 是什么意思?

https://golang.org/pkg/testing/ 中描述了我们可以使用testing.B.RunParallel()函数在并行设置中运行基准测试。我尝试编写简单的测试代码:

func BenchmarkFunctionSome(b *testing.B) {

    for i := 0; i < b.N; i++ {
        SomeFunction()
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将其更改为使用 RunParallel()

func BenchmarkFunctionSome(b *testing.B) {

    b.RunParallel(func(pb *testing.PB) {
        for pb.Next() {
            SomeFunction()
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

使用RunParallel()的比第一个基准测试慢。

实际上,基准测试中并行设置的含义是什么?为什么我使用它会变慢RunParallel()

testing go

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