Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 在雄辩中setTable()之后关系不起作用_Laravel_Eloquent_Relationship - Fatal编程技术网

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;