好的,所以一直想弄清楚如何建立这种关系。使用雄辩的流明。我有两张桌子。列表表。其中包含控制台。我不想要一个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');
}
这种关系破裂了,或者我不理解这种关系应该如何捆绑在一起......
答案 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;