雄辩属于关系不起作用

时间:2016-05-09 00:47:39

标签: laravel eloquent relationships lumen

好的,所以一直想弄清楚如何建立这种关系。使用雄辩的流明。我有两张桌子。列表表。其中包含控制台。我不想要一个emum或纯文本,所以我想把它提取到一个控制台表中。控制台1,控制台2等,但由于某种原因我无法得到匹配的关系。

Listing Table:
id: 1 | console_id: 3
id: 2 | console_id: 4
id: 3 | console_id: 3
id: 4 | console_id: 2

Console Table:
id: 1 | console: Console 1
id: 2 | console: Console 2
id: 3 | console: Console 3

现在在我的清单模型中我有:

public function console()
{
    return $this->belongsTo('App\Console');
} 

这种关系破裂了,或者我不理解这种关系应该如何捆绑在一起......

1 个答案:

答案 0 :(得分:1)

我认为你的班级不能有控制台名称,因为Laravel有控制台名称空间或自动加载器会尝试加载它的类。

1)将控制台类重命名为 ConsoleItem

2)尝试这样写,准确输入字段(因为我们不想更改表结构):

public function console()
{
    return $this->belongsTo('App\ConsoleItem', 'console_id', 'id');
} 

3)通过使用with()调用控制台来获取它:

$Listings = Listing::with(['console'])->whereConsoleId(3)->get();
foreach($Listings AS $Listing) {
  echo 'Listing: '.$Listing->id.' | Console: '.$Listing->console->console."<br/>";
}

如果它仍然不起作用,必须分析原因。

所以请为你的模特添加文件内容。

4)使用cli命令清理自动加载器缓存以减少自动加载器的作曲家和清理等事情:

php artisan clear-compiled
composer dump-autoload

但是!最好让你的模型在app / Models文件夹中,并且代码如下:

<?php namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Console extends Model

那么你的清单就像:

<?php namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Listing extends Model {

  protected $table = 'listing';
  public $timestamps = false;

  public function console() {
    return $this->belongsTo('App\Models\Console', 'console_id');
  }
}

在控制器内使用它们:

use App\Models\Listing;

查看屏幕截图:http://joxi.ru/82QWW0f1a4YXrd