我已经绞尽脑汁了好一阵子,我无法想出这种情况发生的原因。
基本上,我有一个充满订户列表名称的表,我需要为每个表的详细信息页面检索一个表。但是,无论我如何尝试检索数据,它总是返回表中的每一行。在此模型上,我有两个关系,因为订户列表有很多用户,并且可能还有很多组织。
这是我当前用来检索单个记录的查询:
$query = SubscriberList::with($loadRelations)->where('id', $subscriberListId)->firstOrFail();
这将返回所有行。
我也尝试过:
$query = SubscriberList::with($loadRelations)->findOrFail($subscriberListId);
具有相同的结果。
我的关系分别为users
和organisations
,并在SubscriberList模型中设置如下:
public function users()
{
return $this->hasManyThrough(User::class,SubscriberListsUsers::class,'user_id','id');
}
public function organisations()
{
return $this->hasManyThrough(Organisation::class, SubscriberListsOrganisations::class,'organisation_id','id');
}
每个人都使用不同的数据透视表来容纳关系。
我不确定为什么要得到我要得到的结果-任何人都可以阐明这一点吗?我没有使用Eloquent很久了,所以我可能只是在这里错过了一些显而易见的东西。
编辑:
dd($query)
的结果:
SubscriberList {#451
#fillable: array:1 [
0 => "name"
]
#connection: "pgsql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:4 [
"id" => 10
"name" => "Michael"
"created_at" => "2018-08-07 13:59:24"
"updated_at" => "2018-08-07 13:59:24"
]
#original: array:4 [
"id" => 10
"name" => "Michael"
"created_at" => "2018-08-07 13:59:24"
"updated_at" => "2018-08-07 13:59:24"
]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: array:2 [
"users" => Collection {#440
#items: []
}
"organisations" => Collection {#454
#items: []
}
]
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [
0 => "*"
]
}
编辑:users
和数据透视表的模式:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->string('colour');
$table->integer('organisation_id')->unsigned()->nullable();
$table->string('requested_organisation')->nullable();
$table->integer('sso_id')->nullable();
$table->string('email')->unique();
$table->string('job_title')->nullable();
$table->string('telephone')->nullable();
$table->boolean('confirmed')->default(false);
$table->rememberToken();
$table->timestamps();
$table->foreign('organisation_id')
->references('id')
->on('organisations')
->onUpdate('cascade')
->onDelete('set null');
});
Schema::create('subscriber_lists_users', function(Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('subscriber_list_id');
$table->integer('user_id');
$table->foreign('subscriber_list_id')
->references('id')
->on('subscriber_lists')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('user_id')
->references('id')
->on('users')
->onUpdate('cascade')
->onDelete('cascade');
});
答案 0 :(得分:0)
.css
执行一个新查询,只返回$query->get()
。
$query
使用错误的关系类型:
users