你可以使用 resolveRelationUsing 方法在运行时定义 Eloquent 模型之间的关系。虽然通常不建议在常规应用程序开发中使用它,但是在开发 Laravel 软件包时,这有时可能会很有用: resolveRelationUsing 方法的第一个参数是关联名称。传递给该方法的第二个参数应该是一个闭包,闭包接受模型实例并返回一个有效的 Eloquent 关联...
$query = Model::query()->with([ 'relationOne', 'relationTwo', ...])$query = $query->join(DB::raw("( select * from <models_table> where <some_condition>) as new_model"), 'new_model.id', '=', '<models_table>.id')$query = $query-...
use Illuminate\Database\Eloquent\Relations\Relation; Relation::morphMap([ 'posts' => 'App\Post', 'videos' => 'App\Video', ]); 你可以在 AppServiceProvider 的boot 方法中注册这个 morphMap,如果需要的话,也可以创建一个独立的服务提供者来实现这一功能。
如果要统计其它关联模型结果数量字段,可以依次类推,对应字段都是 {relation}_count 结构。注:实际开发中为了提高查询性能,我们往往是在 posts 表中冗余提供一个 comments_count 字段,每新增一条评论,该字段值加 1,查询的时候直接取该字段即可,从而提高查询的性能。
如果你想要從關聯中計算結果的數字,而不載入它們。你可以使用 withCount 方法,該方法會在你的結果模型上放置 {relation}_count 欄位。例如:$posts = App\Post::withCount('comments')->get(); foreach ($posts as $post) { echo $post->comments_count; }Copy你可以為多個關聯新增「counts」,還有為查詢...
你可以使用 resolveRelationUsing 方法在运行时定义 Eloquent 模型之间的关系。虽然通常不建议在常规应用程序开发中使用它,但是在开发 Laravel 软件包时,这有时可能会很有用。resolveRelationUsing 方法的第一个参数是关联名称。传递给该方法的第二个参数应该是一个闭包,闭包接受模型实例并返回一个有效的 Eloquent 关联...
如果你想对关联数据进行计数但又不想再发起单独的 SQL 请求,你可以使用 withCount 方法,此方法会在你的结果集中增加一个 {relation}_count 字段:$posts = App\Post::withCount('comments')->get(); foreach ($posts as $post) { echo $post->comments_count; }你还可以像在查询语句中添加约束一样,获取...
WithhasManyrelation, I can use : publicfunctionstoresWithProducts(){return$this->hasMany('App\Models\Store')->has('products'); } But I don't find how to use a condition forbelongsTo, I tried in myArea, but it loads everything : ...
has() is to filter the selecting model based on a relationship. So it acts very similarly to a normal WHERE condition. If you just use has('relation') that means you only want to get the models that have at least one related model in this relation.Example:...
publicfunctionbelongsTo($related,$foreignKey=null,$ownerKer=null,$relation=null) 第一个参数是关联模型的类名。第二个参数是当前模型类所属表的外键,第三个参数是关联模型类所属表的主键,第四个参数默认约定是关联关系方法名,也是关联关系动态属性名。