【发布时间】:2020-12-01 10:01:21
【问题描述】:
我是 Laravel 的新手,对通过使用多态关系进行 Laravel SQL 查询有一些疑问
情况是: 我的 SQL 中有两个不同的表。 一个表“庄园”包含庄园列表及其参数 另一个表是“type_categories”,其中包含类型类别列表 每个庄园都可以与许多类型类别相关,并且每个类型类别都可以有许多庄园(所以我使用多态关系多对多)。 它们通过第三个表相关''
因此,我需要做一个查询,它将找到与类别相关的所有房地产,但我的用户可以选择许多类别,而不仅仅是一个。
我尝试使用函数find(1)->estates;,它作为参数具有类别类型的ID,我试图找到相关的庄园。它工作得很好,但问题是,我的用户需要为多个类别和函数找到一个属性,但是在我们nave 多态关系的情况下,函数 finds 只使用一个参数,而不是我需要的几个参数。
有没有办法在函数 find() 中使用多个参数并使用多态性? 当然,它还有其他一些功能......
然后我给你看我的代码。
庄园模型外观:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class Estate extends Model
{
protected $fillable = ['title', 'slug', 'estate_text', 'created_by', 'modified_by'];
public function categories() {
return $this->morphToMany('App\TypeCategory', 'categoryable');
}
}
类型类别模型外观:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class TypeCategory extends Model
{
protected $fillable = ['title', 'slug', 'parent_id', 'created_by', 'modified_by'];
public function estates() {
return $this->morphedByMany('App\Estate', 'categoryable');
}
}
最后,我尝试选择房地产模型的房地产控制器看起来:
use Illuminate\Http\Request;
use App\Estate;
use App\TypeCategory;
class EstateController extends Controller {
public function searchEstate() {
$estates = TypeCategory::find(1)->estates;
return view('main', [
'estates' => $estates
] );
}
}
【问题讨论】:
标签: php sql laravel polymorphism