我正在将项目移植到Laravel.
我有两个数据库表,彼此之间处于一对多关系.它们有三个条件.如何在Eloquent中建立这种关系模型?
我不应该修改数据库模式,因为它必须保持向后兼容其他东西.
我尝试了以下,但它不起作用.
拥有方:
use Illuminate\Database\Eloquent\Model;
class Route extends Model
{
public function trips()
{
return $this->hasMany('Trip', 'route_name,source_file', 'route_name,source_file')
}
}
Run Code Online (Sandbox Code Playgroud)
反面:
use Illuminate\Database\Eloquent\Model;
class Trip extends Model
{
public function routes()
{
return $this->belongsTo('Route', 'route_name,source_file', 'route_name,source_file');
}
}
Run Code Online (Sandbox Code Playgroud)
示例Route数据库值:
id | route_name | source_file
---------------------------------------
1 | Berlin - Paris | file1.xls
2 | Madrid - London| file2.xls
3 | Berlin - Paris | file3.xls
Run Code Online (Sandbox Code Playgroud)
示例Trip数据库值:
id | route_name | source_file | duration
--------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 元组是以逗号分隔的值列表
所以声明元组的有效语法是:
tup = 'a', 'b', 'c', 'd'
Run Code Online (Sandbox Code Playgroud)
但我经常看到的是这样的声明:
tup = ('a', 'b', 'c', 'd')
Run Code Online (Sandbox Code Playgroud)
将元组括在括号中有什么好处?
我有以下代码,它依赖于Doctrine的QueryBuilder API来生成DQL状态.
class PlayerRepository extends EntityRepository
{
public function findByPartialNameMatch($trainer, $fullName)
{
$qb = $this->createQueryBuilder('tp');
$qb->innerJoin('tp.player', 'p')
->where($qb->expr()->andX(
$qb->expr()->orX(
$qb->expr()->like(
$qb->expr()->concat('p.firstName', $qb->expr()->concat(' ', 'p.lastName')),
$qb->expr()->literal($fullName.'%')
),
$qb->expr()->like(
$qb->expr()->concat('p.lastName', $qb->expr()->concat(' ', 'p.firstName')),
$qb->expr()->literal($fullName.'%')
)
),
$qb->expr()->eq('tp.trainer', '?1')
)
)
->groupBy('p.id')
->orderBy('p.lastName', 'ASC')
->orderBy('p.firstName', 'ASC')
->setParameter(1, $trainer);
return $qb->getQuery()->getResult();
}
Run Code Online (Sandbox Code Playgroud)
}
当我运行它时,Symfony2抛出以下错误消息:
[Syntax Error] line 0, col 123: Error: Expected StateFieldPathExpression | string | InputParameter | FunctionsReturningStrings | AggregateExpression, got ','
Run Code Online (Sandbox Code Playgroud)
查看堆栈跟踪,显示以下内容:
at QueryException ::syntaxError ('line 0, col 123: Error: Expected StateFieldPathExpression …Run Code Online (Sandbox Code Playgroud) 我使用 CodeMirror 以 XML 模式显示 XML,但代码没有自动缩进。
我检查过,XML 模式确实实现了indent(state, textAfter, fullLine),它处理缩进,所以它应该可以工作。
这就是我初始化 CodeMirror 的方式:
CodeMirror.fromTextArea(document.getElementById("test"), {
mode: 'application/xml',
theme: 'eclipse',
lineNumbers: true,
lineWrapping: true,
readOnly: true,
cursorBlinkRate: -1
});
Run Code Online (Sandbox Code Playgroud)
检查此 jsFiddle 链接以获取实时版本:https ://jsfiddle.net/zrosfz7x 。
有任何想法吗?
按照提供的说明使用deps文件安装JMS Serializer Bundle后,出现以下错误:
Fatal error: Class 'Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension' not found in /vendor/bundles/JMS/SerializerBundle/DependencyInjection/JMSSerializerExtension.php on line 30
Run Code Online (Sandbox Code Playgroud)
Symfony中不存在该类.我正在使用Symfony v2.0.17.有没有解决这个问题?
我早些时候已经意识到这种类型的问题,但我到处寻找,我找不到解决方案.
我试图使用minGW的make实用程序调用makefile,但是我一直遇到这个错误:
D:\ Aufgabe 4> mingw32-make -f aufgabe4.make mingw32-make:*没有规则来制作目标
half_adder.o,', needed byaufgabe4.out'.停止.'
这是makefile的内容:
aufgabe4.out : half_adder.o, adder.o, program.o
g++ -o aufgabe4.out half_adder.o adder.o program.o
half_adder.o: half_adder.h half_adder.cpp
g++ -c half_adder.cpp
adder.o: half_adder.h half_adder.cpp adder.h adder.cpp
g++ -c adder.cpp
program.o: half_adder.h adder.h program.cpp
g++ -c program.cpp
clean:
rm *.o aufgabe4.out
Run Code Online (Sandbox Code Playgroud)
这是目录的内容:
D:\Aufgabe 4>dir
Volume in drive D has no label.
Volume Serial Number is 6E0B-16A3
Directory of D:\Aufgabe 4
11/08/2011 12:29 PM <DIR> .
11/08/2011 12:29 PM <DIR> …Run Code Online (Sandbox Code Playgroud) symfony ×2
c++ ×1
codemirror ×1
doctrine-orm ×1
eloquent ×1
javascript ×1
laravel ×1
makefile ×1
mingw ×1
php ×1
python ×1
symfony-2.0 ×1