我正在尝试在我的标签模型上建立双向ManyToMany关系,但遇到了这个“问题”。
我的模型如下:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tag extends Model
{
protected $table = 'tags';
public $timestamps = false;
public function tags()
{
return $this->belongsToMany(Tag::class, 'tag_tag', 'tag_one_id', 'tag_two_id');
}
}
假设现在我有一个标签表,里面有Tag1和Tag2两个标签,然后我将Tag2与Tag1相关联。 此时我的关系表将如下所示:
+----+------------+------------+
| id | tag_one_id | tag_two_id |
+----+------------+------------+
| 1 | 1 | 2 |
+----+------------+------------+
当我尝试这段代码时:
$tag = Tag::find(1);
$tag->tags()->get();
我得到了Tag2实例,它是正确的。但是当我尝试运行这段代码时:
$tag = Tag::find(2);
$tag->tags()->get();
我想要获取Tag1实例,但我没有得到。
使用Laravel默认的Eloquent模型,是否有一种方法可以只使用一个模型方法就能完成此操作?
Tag::whereIn('id', $ids)->get()
将返回相同的结果。我正在尝试找出这种情况的用例。 - N Mahurin