我的问题是我试图在职位和体裁之间建立多对多关系。这是我到目前为止所做的。
class Post extends Model
{
public function genres()
{
return $this->belongsToMany('App\Genre');
}
}
class Genre extends Model
{
public function posts()
{
return $this->hasMany('App\Post');
}
}
类型表
+----+--------+
| id | name |
+----+--------+
| 1 | News |
| 2 | Sports |
+----+--------+
张贴表格
+----+----------------+
| id | title |
+----+----------------+
| 1 | Political News |
| 2 | Sport Update |
+----+----------------+
genre_post表
+----+---------+----------+
| id | post_id | genre_id |
+----+---------+----------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
+----+---------+----------+
当我尝试查看帖子的体裁列表时,一切正常。
Post::where('slug', '=', $id)->with("genres")->first(); // no problem
但是当我尝试相反的操作时,它不起作用。
$posts = Genre::where( "slug", "=", $id )->with("posts")->first();
我遇到以下错误。
未找到列:1054“ where”中的未知列“ post.genre_id” 子句”(SQL:从
post
中选择*,其中post
。genre_id
我了解到laravel试图从genre_id
表中访问post
列,因为该列是多对多的关系,这意味着一个帖子可以包含一个以上的类型,而一个类型可以包含一个以上的类型包含多个帖子。
任何想法我该如何解决?
答案 0 :(得分:1)
这是可以预期的,因为if(myWifiManager.isWifiEnabled()){
System.out.println("Toggle Wifi Enabled going to disable");
myWifiManager.setWifiEnabled(false);
}
else{
System.out.println("Wifi Disabled going to enable ");
if(Settings.System.getInt(context.getContentResolver(),Settings.System.AIRPLANE_MODE_ON, 0) != 0){
Runtime.getRuntime().exec("adb shell settings put global airplane_mode_radios cell,nfc,wimax,bluetooth");
}
myWifiManager.setWifiEnabled(true);
System.out.println("WI: "+myWifiManager.isWifiEnabled());
}
本身是一对多的关系。请改用hasMany
。
belongsToMany