【发布时间】:2016-12-12 05:51:32
【问题描述】:
我在我的用户表和他们的一些数据之间建立了多态的多对多关系。目前它返回空,我不知道为什么。 关系看起来有点像这样:
由于用户的设置完全相同,我目前正在测试代理代码。
我正在尝试调用该机构已标记的每种语言的语言表中的语言描述。像这样的:
public function compose(View $view) {
$loggedinagency = Auth::user()->id;
$agency = Agency::with('languages')->findOrFail($loggedinagency);
$view->with(compact('agency', 'loggedinagency'));
}
In the view blade:
<p> @foreach($agency->languages as $Lang)
{{ $Lang->description }}<br>
@endforeach</p>
语言模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Languageable extends Model
{
protected $table = 'languageables';
protected $fillable = ['language_id','languageable_id', 'languageable_type'];
}
语言模型:
<?php
namespace App;
use App\Agency;
use Illuminate\Database\Eloquent\Model;
class Language extends Model
{
protected $table = 'languages';
public function agencyies() {
return $this->morphedByMany('Agency', 'Languageable');
}
}
代理模式:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use App\languageable;
use App\Language;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Agency extends Authenticatable
public function languages() {
return $this->morphToMany(Language::class, 'Languageable');
}
}
架构:
语言:
Schema::create('languageables', function (Blueprint $table){
$table->increments('id');
$table->integer('language_id');
$table->foreign('language_id')->references('id')->on('languages');
$table->integer('languageable_id');
$table->string('languageable_type', 31);
$table->timestamps();
});
语言:
Schema::create('languages', function (Blueprint $table){
$table->increments('id');
$table->string('subcategory', 31);
$table->string('description', 127);
});
信息存储在 languageables 表中,如下所示:
它不会显示任何内容,当我尝试 var_dump 带有关系的模型调用时,使用 tinker 进行查询将返回 null。有什么我错过或出错的吗?没有错误,所以理论上它应该可以工作,但也许 laravel 正在数据库中寻找错误的 id 或数据点?
编辑:调试栏显示正在执行以下查询:
select `languages`.*, `Languageables`.`Languageable_id` as `pivot_Languageable_id`, `Languageables`.`language_id` as `pivot_language_id` from `languages` inner join `Languageables` on `languages`.`id` = `Languageables`.`language_id` where `Languageables`.`Languageable_id` in ('196') and `Languageables`.`Languageable_type` = 'App\Agency'
【问题讨论】:
标签: php laravel-5 many-to-many polymorphic-associations