标签: eager-loading

Laravel 急切加载不起作用?

机场表:

Schema::create('airports', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('code');
            $table->string('name');
            $table->string('city');
            $table->timestamps();
        });
Run Code Online (Sandbox Code Playgroud)

航班表:

Schema::create('flights', function(Blueprint $table)
        {
            $table->increments('id');
            $table->integer('number');
            $table->integer('origin')->unsigned();
            $table->foreign('origin')->references('id')->on('airports');
            $table->integer('destination')->unsigned();
            $table->foreign('destination')->references('id')->on('airports');
            $table->integer('price');
            $table->timestamps();
        });
Run Code Online (Sandbox Code Playgroud)

飞行模型:

<?php

class Flight extends \Eloquent {
    protected $fillable = ['number', 'origin', 'destination'];

    public function origin(){
        return $this->belongsTo('Airport');
    }

    public function destination(){
        return $this->belongsTo('Airport');
    }
}
Run Code Online (Sandbox Code Playgroud)

飞行控制器@索引:

public function index()
    {
        $flights = Flight::with('origin')->with('destination')->get();
        return Response::json($flights, 200);
    }
Run Code Online (Sandbox Code Playgroud)

部分回复:

[
{
"id": "1",
"number": "112",
"origin": null,
"destination": null,
"price": "232",
"created_at": "2014-12-28 11:49:44",
"updated_at": …
Run Code Online (Sandbox Code Playgroud)

eager-loading laravel eloquent laravel-4

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

如何在rails模型中指定关联的热切加载

class A < ActiveRecord::Base
  has_many :Bs
  has_many :Cs
  ...
end
Run Code Online (Sandbox Code Playgroud)

我想在A上进行查询时加载所有的B和C,比如A.where(name: :abc)使用单个查询,而不是多次调用数据库.

我不希望为.includes我运行的每个查询指定.如何在模型中指定预先加载?

我看了许多类似的问题并尝试这样做,但它不起作用:

default_scope :include => [:Bs, :Cs]
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails has-many eager-loading

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

急切的装载不会返回任何东西

当我急切地加载这样的时候:

 return Port::filter($filters)
            ->with(['scores' => function ($query) {
                    $query->select(["*"]);
                }]
            )
            ->actives()
            ->paginate(14);
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果.但是,当我选择特定的列名称时:

 return Port::filter($filters)
            ->with(['scores' => function ($query) {
                    $query->select(["id, name"]);
                }]
            )
            ->actives()
            ->paginate(14);
Run Code Online (Sandbox Code Playgroud)

结果总是如此[].这可能有什么问题?

php eager-loading laravel

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

更改已加载的数组键

我有几个eager loaded关系Laravel 5.6.我想将数组键名更改为eager加载对象上的属性.

所以,让我说我已经急切地加载了这个: 在此输入图像描述

如何确保数组键01成为name属性(" COSTS"和" SAIL_BOAT_FRIENDLY")?

这甚至可能吗?

- 编辑

return Port::filter($filters)
            ->with('scores')
            ->actives()
            ->paginate(14);
Run Code Online (Sandbox Code Playgroud)

得分关系

public function scores()
{
    return $this->hasMany(Score::class)
        ->select("id", "port_id", "name", DB::raw('AVG(score) as score'))
        ->groupBy('port_id', 'name');
}
Run Code Online (Sandbox Code Playgroud)

php arrays eager-loading laravel

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