Laravel 5 怎么实现一个 Model 操作不同表名而相同结构的数据表
问题大体如题,具体描述如下:
我建有多张同结构的数据表,只是数据表前缀不同,类似这样a_blog|b_blog|c_blog
.
我想只建立一个Model
就对这几张表进行操作,可是出现错误,下面贴出代码,谁有好的办法,帮解决一下,谢谢啦!
代码
namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* ###_blog模型
*/
class Blog extends Model
{
private static $prefix;
public function __construct( $prefix = '' )
{
self::$prefix = $prefix;
parent::__construct();
}
protected $table = self::$prefix . '_blog';
public $timestamps = false;
}
error
FatalErrorException in Blog.php line 17:
syntax error, unexpected '$prefix' (T_VARIABLE), expecting identifier
(T_STRING) or class (T_CLASS)
有个项目也有这个需求(加后缀),搜了一下没啥好的解决方案,看了下源码自己写了个实现,顺便在这个三年没有回复的帖子留个脚印,没准有其他人需要,新人,希望不会误人子弟,手动捂脸
在需要进行分表的model里面use这个trait,然后再调用其他方法之前先执行suffix方法传入后缀
@Foris 大佬!我最近正好也要这需求,能不能写个详细的用法放到社区里?谢谢了
@wanghan 楼上很好的用 trait 解决了。
@Foris 时隔 4 年,登上这个账号发现了这个回复,首先感谢回复。 4 年前还在上学的我遇到这个问题,而现在已经在阿里好久都不碰 laravel 了,真的是好快。再说一下,trait 这个方法还是很巧妙的。
@Kashin 最近在搞什么语言?
@两说 在阿里当然是搞 spring 了 :joy: