gpt4 book ai didi

Laravel Jenssegers MongoDb 关系不起作用?

转载 作者:行者123 更新时间:2023-12-04 04:29:45 25 4
gpt4 key购买 nike

我正在尝试使用 Laravel/Jenssegers MongoDB 为我的应用程序设置一些简单的收藏夹

我有两个模型:

class Item {

public function favorites()
{
return $this->hasMany('App\Models\User', 'favorites');
}
}

class User {

public function favorites()
{
return $this->hasMany('App\Models\Item', 'favorites');
}
}

所以一个项目可以有很多用户,一个用户可以有很多项目或“收藏夹”。

当我尝试运行一个简单的查询时:
Item::with('favorites')->get();

收藏夹的关系存在,但数组为空。
favorites表很简单,只有三列:
_id, item_id, user_id

我也试过使用 embedsMany没有运气:
return $this->embedsMany('App\Models\User', 'favorites');

我也尝试了各种参数组合。
return $this->embedsMany('App\Models\User', 'favorites', 'building_id', 'user_id');
return $this->embedsMany('App\Models\User', 'favorites', 'user_id', 'building_id');
return $this->hasMany('App\Models\User', 'favorites', 'building_id', 'user_id');
return $this->hasMany('App\Models\User', 'favorites', 'user_id', 'building_id');

使用时出现奇怪的结果:
return $this->hasMany('App\Models\User', 'favorites', 'building_id', 'user_id');

只有在这种情况下,它才会返回所有用户,即使收藏夹只有一条记录。

还尝试使用 getQueryLog 进行调试只是一直给我一个空数组。
print_r(\DB::connection('mongodb')->getQueryLog());

我已经使用 mysql 完成了此操作并且从来没有问题。所以不太确定问题来自哪里。

最佳答案

你能试试这些吗,我知道它是一样的,但可能会成功:

use App\User;
use App\Item;

class Item {

public function favorites()
{
return $this->hasMany('User');
}
}

class User {

public function favorites()
{
return $this->hasMany('Item');
}
}

class Favourite {

public function users()
{
return $this->belongsTo('User');
}

public function items()
{
return $this->belongsTo('Item');
}
}

还要添加上述关系的倒数,如:belongsTo。
然后试试这个查询:
//Just for testing purpose, if raw query returns right result
$items = DB::table('items')
->join('favorites','items.id','=','favorites.id')
->get();

关于Laravel Jenssegers MongoDb 关系不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36442239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com