Laravel 在雄辩中setTable()之后关系不起作用
首先考虑不使用关系Laravel 在雄辩中setTable()之后关系不起作用,laravel,eloquent,relationship,Laravel,Eloquent,Relationship,首先考虑不使用关系 DB::connection()->enableQueryLog(); $oPost = new Post(); $oPost->setTable('posts_two'); $aPost = $oPost->get(); $queries = DB::getQueryLog(); dd($queries); 这将导致以下查询 从posts\u two中选择* 现在,考虑关系的情况, DB::conn
DB::connection()->enableQueryLog();
$oPost = new Post();
$oPost->setTable('posts_two');
$aPost = $oPost->get();
$queries = DB::getQueryLog();
dd($queries);
这将导致以下查询
从posts\u two中选择*
现在,考虑关系的情况,
DB::connection()->enableQueryLog();
$oPost = new Post();
$oPost->setTable('posts_two');
$aPost = $oPost->with('comments')->get();
$queries = DB::getQueryLog();
dd($queries);
这将导致以下查询
从posts
问题是,每当我使用with()
,它都会使用默认表(posts),而不是我通过setTable设置的表名(posts\u two)
我无法确定为什么会发生这种情况?提前感谢您的任何帮助。:) get()
是一种方法,因为您收到
从两个帖子中选择*
然而,with()
是一种方法。静态方法使用全新的实例,因此它们将创建具有默认表属性的新实例。所以你收到,
从帖子中选择*
根据我的理解,您不能在这里使用静态方法,因此我认为您必须首先获取posts\u two
数据,然后使用posts\u two
数据获取comments
并绑定到一起。为什么不使用Post::with(['comments')->get()@桑迪,我必须先用可设置的。那么,如果在关系之前刷新实例,我将使用with()怎么办$oPost->setable('posts_two')$oPost->refresh()$aPost=$oPost->with('comments')->get()@卡斯珀没有用。同样的回答。你知道吗?你可以试试$oPost->bind('connection','posts_two')而不是setable;