我的村庄模型;
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Village extends Model {
public function positions() {
return $this->belongsTo(Map::class, 'id', 'field_id');
}
}
我的地图类迁移;
Schema::create('map_data', function (Blueprint $table) {
$table->increments('id');
$table->integer('field_type');
$table->integer('field_id');
$table->string('x');
$table->string('y');
$table->timestamps();
});
我的“村庄”方法在“村庄管理员”课上;
public function villages() {
$villages = Village::with([
'positions' => function ($query) {
$query->select('x', 'y');
}
])->get();
return $villages;
}
后果
{
"villages": [
{
"id": 1,
"name": "village 1",
"created_at": "2016-10-26 18:36:34",
"updated_at": "2016-10-26 18:36:34",
"positions": null
},
{
"id": 2,
"name": "village 2",
"created_at": "2016-10-26 18:36:34",
"updated_at": "2016-10-26 18:36:34",
"positions": null
}
]
}
“选择”方法只需要提到,但不需要列返回NULL。
如果我删除$query-
{
"villages": [
{
"id": 1,
"name": "village 1",
"created_at": "2016-10-26 18:36:34",
"updated_at": "2016-10-26 18:36:34",
"positions": {
"id": 1,
"field_type": "1",
"field_id": "1",
"x": "21",
"y": "21",
"created_at": "2016-10-26 18:36:34",
"updated_at": "2016-10-26 18:36:34"
}
},
{
"id": 2,
"name": "village 2",
"created_at": "2016-10-26 18:36:34",
"updated_at": "2016-10-26 18:36:34",
"positions": {
"id": 2,
"field_type": "1",
"field_id": "2",
"x": "0",
"y": "0",
"created_at": "2016-10-26 18:36:34",
"updated_at": "2016-10-26 18:36:34"
}
}
]
}
但是我使用
$query-
资源:https://stackoverflow.com/a/32185643/3287225
当您尝试急切地加载具有
Village::with(['positions'])->get();
发生了三件事:
为了让它工作,获取的位置需要获取field_id列,否则雄辩无法将它们与相应的村庄匹配。
当你这么做的时候
$query->select('x', 'y');
您只从位置表中获取x和y列。field_id列没有被获取,这就是为什么Eloquent无法用Village对象获取它们,这就是为什么您在位置集合中获得null。
替换
$query->select('x', 'y');
与
$query->select('field_id', 'x', 'y');
使代码按预期工作。
我的村庄模式; 我的地图类迁移;
我正在做一个Spring Boot Thymeleaf项目。我有文件,其中的片段用于其他超文本标记语言文件,以避免重写代码。 ,其中填充了客户端ID。 我已经在文件。 现在,我尝试在选择任何一个select选项时进行ajax调用,以将它们保存在session对象中。为此,我在。 但当选择选择选项时,永远不会调用此脚本。 我也试过: 我想通过这段代码实现的是:当选择任何一个select选项时,将调用
嗨,我正在学习laravel。我使用雄辩的ORM删除方法,但我得到了不同的结果。不是真的或假的,而是空的。我设置了一个资源路由,在UsersController中有一个销毁方法。 但是我总是得到一个响应{“status”:“0”,“msg”:“failed”},数据库中的记录被删除。 然后我使用dd($res)。它在页面中显示null。 但是从课程中我学习到它返回一个布尔值true或false。
我已在模型中设置变量。我想测试功能,但出现以下错误: SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“\u方法”(SQL:updateset=临时水生领袖,=放置,=2,=这是我的描述,=2014-05-29 17:05:11其中客户id=1和=2) 当我的fillable没有这个参数时,为什么要对大喊大叫?我的更新功能是:
请查看下面的代码。 我在“CompletedService”中有多条记录,并且在account表中有一个父id account\u id。我和你约会是为了钱。 ASC和DESC已经尝试过了。 尝试按whereHas排序,但不会影响任何记录。下面是模型关系。 我不需要在模型中使用orderby,因为我多次使用了这个关系,并且在这个查询中只需要orderby。 与一个已完成的服务记录关系只有一个账户。
我有一个小问题,当我试图通过使用雄辩的模型在列中创建_来排序记录时。订单是按日期而不是按时间进行的。例如,如果我有3条记录的值为created_at: > 2017-07-04 07:16:33 2017-07-04 05:35:01 2017-07-04 05:27:48 使用orderby('created_at','desc')或'asc'时,我有相同的输出。但是,如果我有,订购就可以了 2