Eloquent加入where子句

时间:2017-08-05 13:03:02

标签: laravel join eloquent

我有问题与雄辩建立关系。 我有两个模型,Spielplan和Verein。在模型Spielplan我有字段Team_ID和Spiel_ID。在模型Verein我有字段V_ID和名称。现在我需要加入关于Team_ID = V_ID的这两个表。

这是我的模特

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Spielplan extends Model
{
    protected $table = 'Spielplan';

    public function vereinFunction(){
        return $this->hasOne('App\Verein', 'V_ID');
    }
}

这是我的网络路线中的一个功能,我想获得Spiel_ID和名称。

Route::get('test', function(){
    $spieleT = App\Spielplan::where('Spiel_ID', '=', 30)->get();
    foreach($spieleT as $da){
        echo $da->Spiel_ID;
        echo $da->vereinFunction->Name;
    }
});

第一个echo工作,我回到Spiel_ID,但第二个echo返回ErrorException试图获取非对象的属性。 我的代码出了什么问题?

2 个答案:

答案 0 :(得分:0)

尝试编辑此行:

$spieleT = App\Spielplan::with('vereInFunction')->where('Spiel_ID', '=', 30)->get();

with()允许您在使用get()时获取关联。使用get()后,您正在使用集合,并且无法再次查询数据库。

答案 1 :(得分:0)

尝试将模型主键指定为第三个参数,因为如果没有,Laravel将假定它被命名为id,而实际情况并非如此。

请允许我向你推荐一些东西:我曾经像你一样命名表格和字段(在我使用Codeigniter的日子里),但自从我三年前开始使用Laravel以来,我遵循Laravel惯例(推荐使用,但是没有强加)。我现在将这些表命名为小写,(snakecase)复数,表字段也是snakecasm小写。模型奇异,类似于相应的表格,关系函数名称作为相关模型,如果关系是一个奇异,复数如果是多,等等。这个的优点是在模型关系声明中反映出来,这更简单,更容易定义。

例如(仅作为上述说明),

表(关系一对多:

经理(主键:id,名称,......) 技术人员(主键:id,foreingkey:manager_id(相关表格名称加上下划线加id),名称,.....)

模型:

管理器:

/ * relationship * /

public function technicians () // see name as related table, plural due to as many relationship)
{
    return $this->hasMany(Technician::class); // as naming convention has followed, you don't need to specify any extra parameters;
}

Techician:

/ * relationship * /

public function manager() // named as related table, singular due to to one relationship
{
    $this->belongsToOne(Manager::class); // again, as naming convention has followed, you don't need to specify any extra parameters;
}

因此你可以这样做:

$manager::find(1);
echo $manager->technicians->first()->name,

foreach ($manager->technicians as $technician) {
    echo $technician->name;
}

以及:

$technician->manager->name;

请记住,正确的模型关系定义会在此过程中避免很多麻烦,例如您拥有的

无论如何希望这有帮助