分类自动完成
This commit is contained in:
parent
cfe1e6d987
commit
6beb14b25d
|
|
@ -4,6 +4,7 @@ namespace Beike\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
|
||||||
class CategoryPath extends Model
|
class CategoryPath extends Model
|
||||||
{
|
{
|
||||||
|
|
@ -14,4 +15,14 @@ class CategoryPath extends Model
|
||||||
'path_id',
|
'path_id',
|
||||||
'level',
|
'level',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function category(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(Category::class, 'id', 'category_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function pathCategory(): HasOne
|
||||||
|
{
|
||||||
|
return $this->hasOne(Category::class, 'id', 'path_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,16 +64,27 @@ class CategoryRepo
|
||||||
|
|
||||||
public static function autocomplete($name)
|
public static function autocomplete($name)
|
||||||
{
|
{
|
||||||
$categories = Category::query()->with('description')
|
$categories = Category::query()->with('paths.pathCategory.description')
|
||||||
->whereHas('description', function ($query) use ($name) {
|
->whereHas('paths', function ($query) use ($name) {
|
||||||
$query->where('name', 'like', "{$name}%");
|
$query->whereHas('pathCategory', function ($query) use ($name) {
|
||||||
})->limit(10)->get();
|
$query->whereHas('description', function ($query) use ($name) {
|
||||||
|
$query->where('name', 'like', "{$name}%");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
->limit(10)->get();
|
||||||
$results = [];
|
$results = [];
|
||||||
foreach ($categories as $category) {
|
foreach ($categories as $category) {
|
||||||
|
$pathName = '';
|
||||||
|
foreach ($category->paths->sortBy('level') as $path) {
|
||||||
|
if ($pathName) {
|
||||||
|
$pathName .= ' > ';
|
||||||
|
}
|
||||||
|
$pathName .= $path->pathCategory->description->name;
|
||||||
|
}
|
||||||
$results[] = [
|
$results[] = [
|
||||||
'id' => $category->id,
|
'id' => $category->id,
|
||||||
'name' => $category->description->name,
|
'name' => $pathName,
|
||||||
'image' => $category->image,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return $results;
|
return $results;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue