Laravel: belongsTo 在更改其函数名称时不起作用
Laravel: belongsTo not working when changing it's function name
我有这个关系Artist - has many - Album
艺术家class:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Artist extends Model {
public function albums()
{
return $this->hasMany('App\Album');
}
}
专辑class:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Album extends Model {
public function artist()
{
return $this->belongsTo('App/Artist');
}
}
如果我这样做:$album->artist
完全没有问题
但是如果我在 Album class 中更改函数名称而不更改 model/class 名称:
public function artistInfo()
{
return $this->belongsTo('App\Artist');
}
那么,这行不通了:$album->artistInfo
。它 returns null
对我来说
P.S。这不是我的真实模式,但问题仅在我更改 belongsTo 的函数名称时出现。
Eloquent,Laravel中使用的ORM被设计为基于模型,并给出了真实世界的对象定义。因此,根据我的经验,无法更改这些内容。
我会接受上面的答案(?),但你可以做我相信你要问的
Album.php
public static function getAlbum($id)
{
return static::with(['artistInfo'])->find($id);
}
public function artistInfo()
{
return $this->belongsTo('App\Artist');
}
并在 AlbumController.php
use App\Album;
public function single($id)
{
$album = Album::getAlbum($id);
return $album->artistInfo;
}
希望这对您有所帮助。至少,您是否检查过任何 with()
语句以进行适当的名称更改?
好吧,我找到了正确的答案,事实证明这是一个简单的答案。
在关系函数中指定键(外键和本地键)。对于这个例子:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Album extends Model {
public function artistInfo()
{
return $this->belongsTo('App/Artist','artist_id','id');
}
}
现在您可以照常进行了:$artist->artistInfo
或 Album::find(1)->artistInfo->name
使用您的函数的任何名称。只需在此 table.
中添加该模型 (table) 的关系 attribute name
的附加值
public function artistInfo()
{
return $this->belongsTo(Artist::class,'artist_id');
}
我有这个关系Artist - has many - Album
艺术家class:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Artist extends Model {
public function albums()
{
return $this->hasMany('App\Album');
}
}
专辑class:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Album extends Model {
public function artist()
{
return $this->belongsTo('App/Artist');
}
}
如果我这样做:$album->artist
完全没有问题
但是如果我在 Album class 中更改函数名称而不更改 model/class 名称:
public function artistInfo()
{
return $this->belongsTo('App\Artist');
}
那么,这行不通了:$album->artistInfo
。它 returns null
对我来说
P.S。这不是我的真实模式,但问题仅在我更改 belongsTo 的函数名称时出现。
Eloquent,Laravel中使用的ORM被设计为基于模型,并给出了真实世界的对象定义。因此,根据我的经验,无法更改这些内容。
我会接受上面的答案(?),但你可以做我相信你要问的
Album.php
public static function getAlbum($id)
{
return static::with(['artistInfo'])->find($id);
}
public function artistInfo()
{
return $this->belongsTo('App\Artist');
}
并在 AlbumController.php
use App\Album;
public function single($id)
{
$album = Album::getAlbum($id);
return $album->artistInfo;
}
希望这对您有所帮助。至少,您是否检查过任何 with()
语句以进行适当的名称更改?
好吧,我找到了正确的答案,事实证明这是一个简单的答案。
在关系函数中指定键(外键和本地键)。对于这个例子:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Album extends Model {
public function artistInfo()
{
return $this->belongsTo('App/Artist','artist_id','id');
}
}
现在您可以照常进行了:$artist->artistInfo
或 Album::find(1)->artistInfo->name
使用您的函数的任何名称。只需在此 table.
中添加该模型 (table) 的关系attribute name
的附加值
public function artistInfo()
{
return $this->belongsTo(Artist::class,'artist_id');
}