I have a distributor model with a BelongsTo relation and a user model with a HasOne relation, and I tried to retrieve them in order (verified date) using BuilderQuery.
// User relation
public function user()
{
return $this->belongsTo(User::class);
}
// Distributor relation
public function distributor()
{
return $this->hasOne(Distributor::class);
}
// Query
if (!empty(request("sortBy"))) {
$column = explode("__", request("sortBy"))[0];
$sortBy = strtoupper(explode("__", request("sortBy"))[1]);
$query->with("distributor");
if ($column === "verified_date" || $column === "phone") {
// Try 1 - Errors raised
$query->join('distributors', 'distributors.user_id', '=', 'users.id')
->orderBy('distributors.' . $column, $sortBy);
// Try 2 - Errors raised
// $query->select('users.*')
// ->join('distributors', 'distributors.user_id', '=', 'users.id')
// ->orderBy('distributors.' . $column, $sortBy);
// Try 3 - No Errors raised but results returned with incorrect orders
// $query->orderBy(Distributor::select($column)
// ->whereColumn('distributors.user_id', 'users.id')
// );
} else {
$query->orderBy($column, $sortBy);
}
} else {
$query->orderBy("updated_at", "desc");
}
When run this code, I got errors saying SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous
How can I solve this?